我必须检查用户要查找的单词是否也包含在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%\')。。。
我如何解决这个问题?
最合适的回答,由SO网友:Captain Yar 整理而成
我通常反对使用大量插件,但您可以选择使用Relevanssi 插件。我在ACF旁边使用它,并允许您在这些字段中搜索。
如果您决定在安装/激活后使用它,请转到插件的设置页面并向下滚动到“索引选项”部分,在该部分下有一个名为“要索引的自定义字段”的字段。你有几个选择。以下是插件本身的描述:
要包含在索引中的自定义字段的逗号分隔列表。设置为“visible”可索引所有可见的自定义字段,设置为“all”可索引所有自定义字段,也可索引以“\\u”字符开头的字段。
我通常将其设置为“可见”,以便搜索所有可见的自定义字段。
希望这有帮助。