WordPress meta_query未返回结果

时间:2018-12-05 03:12:38

标签: wordpress

我想要一个查询,该查询返回包含用户输入(即$ text)的CPT帖子。

插入meta_key和meta_value效果很好,但是将其放入meta_query数组中不会返回任何内容。我希望能够在多个自定义字段中进行搜索。这是我从头开始制作的主题,因此没有插件,而且functions.php文件很小,因此我认为这可能不会造成冲突。

查询声明中的meta_key和meta_value的代码(有效):

$searchquery = new WP_Query( 
    array( 'post_type' => 'offre',
           'meta_key' => 'offre_employeur',
           'meta_value' => $text, 
           'meta_compare'=> 'LIKE' ) 
);

meta_value数组的代码(不起作用):

$meta_query_args = array(
    'relation' => 'OR',
    array(
        'key'     => 'offre_employeur',
        'value'   => $text,
        'compare' => 'LIKE'
    ),  array(
        'key'     => 'offre_titre',
        'value'   => $text,
        'compare' => 'LIKE'
    )
);
$searchquery = new WP_Query(array('post_type' => 'offre'));
$searchquery->set('meta_query', $meta_query_args);

我尝试的第二种方法的代码,但仍然没有结果(不起作用)

     $args = array(
       'post_type' => 'offre',
        'posts_per_page' => -1,
        's' => $text,
        'meta_query' => array(
            array(
                'key' => 'offre_employeur',
                'value' => $text,
                'compare' => 'LIKE'
            ),
              array(
                'key' => 'offre_titre',
                'value' => $text,
                'compare' => 'LIKE'
            )
        )
    );


    $searchquery = new WP_Query($args);

提前感谢您的时间。

1 个答案:

答案 0 :(得分:1)

根据此处的文档:https://codex.wordpress.org/Class_Reference/WP_Query

我断言您想向下滚动到标题为“ Multiple Custom Field Handling:”的部分,该部分包含以下示例,与您的情况最匹配:

$args = array(
    'post_type'  => 'product',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'color',
            'value'   => 'blue',
            'compare' => 'NOT LIKE',
        ),
        array(
            'key'     => 'price',
            'value'   => array( 20, 100 ),
            'type'    => 'numeric',
            'compare' => 'BETWEEN',
        ),
    ),
);
$query = new WP_Query( $args );

根据您在问题中提供的内容,我将进行以下修改以获得您想要的结果:

$args = array(
       'post_type' => 'offre',
        'posts_per_page' => -1,
        // remove the "search" query, which restricts the results to those with titles / content that match the $text content
        // 's' => $text,
        'meta_query' => array(
            // add the "relation" argument, default is AND, you need OR
            'relation' => 'OR',
            array(
                'key' => 'offre_employeur',
                'value' => $text,
                'compare' => 'LIKE'
            ),
              array(
                'key' => 'offre_titre',
                'value' => $text,
                'compare' => 'LIKE'
            )
        )
    );


    $searchquery = new WP_Query($args);