meta_query,如何使用关系OR&AND进行搜索?

Ang*_*nez 27 wordpress

已解决:请参阅下面的答案.


我有一个自定义的帖子类型,BOOKS.它有几个自定义字段,即; TITLE,AUTHOR,GENRE,RATING.如何修复下面的meta_query代码,以便只在自定义字段中包含搜索词的书籍; 标题,作者,流派; 确切地说,我的搜索表单中指定的评级会显示在结果中吗?

我做了一个自定义搜索表单; 将搜索标题,作者和流派的文本区域; 以及将搜索评级的下拉列表.我在下面做的meta_query只搜索标题,作者和流派.但我现在难以理解如何添加评级代码.

这就是我用meta_query关系在视觉上想象它的方式:(标题或作者或流派)和评级

$args = array(
        'relation' => 'OR',
          array(
             'key' => 'title',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
          array(
             'key' => 'author',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
          array(
             'key' => 'genre',
             'value' => $searchvalue,
             'compare' => 'LIKE'
          );
), 
        array(
        'relation' => 'AND', 
          array(
             'key' => 'rating',
             'value' => $ratingvalue,
             'compare' => '=',
             'type' => 'NUMERIC'
          ));
Run Code Online (Sandbox Code Playgroud)

我非常感谢您的帮助和建议.

Ang*_*nez 49

我找到了一些帮助的解决方案.下面的代码完美无缺.

    $args => array(
        'relation' => 'AND',
        array(
            'relation' => 'OR',
            array(
                'key' => 'title',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'author',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'genre',
                'value' => $searchvalue,
                'compare' => 'LIKE'
            )
        ),
        array(
            'key' => 'rating',
            'value' => $ratingvalue,
            'compare' => '=',
            'type' => 'NUMERIC'

        )
    )
);
Run Code Online (Sandbox Code Playgroud)

  • 在WP 4.1中,像这个答案的嵌套元查询现在应该可以使用,更多信息请访问:https://make.wordpress.org/core/2014/10/20/update-on-query-improvements-in-4-1/ (3认同)
  • 这应该不起作用 - WP_Meta_Query不支持它.见http://wordpress.stackexchange.com/questions/75079/nested-meta-query-with-multiple-relation-keys (2认同)
  • 只是为了增加一个旧答案:现在在法典中明确支持并解释了它:https://codex.wordpress.org/Class_Reference/WP_Meta_Query#Initializing_WP_Meta_Query (2认同)

dip*_*sti 5

经过一番试验和错误后,我找到了解决方案。这是合乎逻辑的,我的意思是 meta_query 不支持字段“key”的数组,但是在“key”中给出数组,我得到了完美的解决方案。我可能听起来很疯狂,但它就像魅力一样工作。

$args => array(
    'relation' => 'AND',
    array(
        'key' => array('title','author','genre',),
        'value' => $searchvalue,
        'compare' => '='
    ),
    array(
        'key' => 'rating',
        'value' => $ratingvalue,
        'compare' => '=',
        'type' => 'NUMERIC'

    )
)
Run Code Online (Sandbox Code Playgroud)

当我们传递的是数组而不是字符串时,您只会收到“trim()”的警告。禁止该警告,或者如果您找到更好的解决方案,请添加一些内容。