我试图干扰默认WP搜索(?s=
) 使其在帖子自定义字段中搜索。
首先,我试图用中的这段代码调试我的搜索functions.php
:
function add_search_in_custom_fields( $query ) {
$query->set(
\'post_type\', \'my_post_type\',
\'meta_query\', array(
array(
\'key\' => \'my_key_title\',
\'value\' => \'my_value_title\',
\'compare\' => \'LIKE\'
)
)
);
return $query;
}
add_action( \'pre_get_posts\', \'add_search_in_custom_fields\' );
奇怪的是,我得到了所有的帖子
my_post_type
) - 不管有没有
value
或不在posts自定义字段中。
似乎是$query
不看meta_query
所有参数。
有什么想法吗?
最合适的回答,由SO网友:GKS 整理而成
你得到了所有的帖子,因为你没有正确地通过元查询。尝试以下代码
function add_search_in_custom_fields( $query ) {
// check the query type.
if ( $query->is_search ) {
$meta_array = array(
array(
\'key\' => \'my_key_title\',
\'value\' => $query->query_vars[\'s\'] ,
\'compare\' => \'LIKE\',
),
);
// set meta query.
$query->set(\'meta_query\', $meta_array);
};
}
add_filter( \'pre_get_posts\', \'add_search_in_custom_fields\');
希望这有帮助!