如何修改标准搜索查询以包括ACF自定义字段值?

时间:2017-01-23 作者:fabio

我必须检查用户要查找的单词是否也包含在ACF自定义字段中。因此,我修改了标准查询,以搜索到我需要的meta\\u查询字段:

function modifica_search( $query ) {
if ( $query->is_search() && $query->is_main_query() ) {
    $meta_query = array(
        array(
            \'key\' => \'contenuto\',
            \'value\' => sanitize_text_field( $_GET[\'s\']),
            \'compare\' => \'LIKE\'
        )
    );

    $query->set( \'meta_query\', $meta_query );
}
} 
add_action( \'pre_get_posts\', \'modifica_search\' );
但是打印出查询(对于米兰)时,我注意到有一个AND操作符(粗体),其中我需要OR:

。。。其中1=1和(((nctm\\u posts.post\\u title,如\'\'%milano%\')或(nctm\\u posts.post\\u摘录,如\'\'%milano%\')或(nctm\\u posts.post\\u content,如\'\'%milano%\'))AND ((nctm\\u postmeta.meta\\u键=\'contenuto\'和nctm\\u postmeta.meta\\u值,如\'\'%milano%\')。。。

我如何解决这个问题?

1 个回复
最合适的回答,由SO网友:Captain Yar 整理而成

我通常反对使用大量插件,但您可以选择使用Relevanssi 插件。我在ACF旁边使用它,并允许您在这些字段中搜索。

如果您决定在安装/激活后使用它,请转到插件的设置页面并向下滚动到“索引选项”部分,在该部分下有一个名为“要索引的自定义字段”的字段。你有几个选择。以下是插件本身的描述:

要包含在索引中的自定义字段的逗号分隔列表。设置为“visible”可索引所有可见的自定义字段,设置为“all”可索引所有自定义字段,也可索引以“\\u”字符开头的字段。

我通常将其设置为“可见”,以便搜索所有可见的自定义字段。

希望这有帮助。

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post