我需要修改或创建WP_Query
,以便在帖子标题或自定义字段(称为“my_field”)中搜索搜索字词。
我一直在阅读并尝试了几个小时,但我回到此代码(下方),唉,只搜索“my_field”并且不考虑post_title
。
function my_pre_get_posts_2( $query ) {
if ( is_admin() && $query->is_main_query() && $query->query['post_type'] === 'post' && isset($query->query['s']) ) {
$search_word = $query->query['s'];
$args = array(
//'s' => $search_word, //If I include this line, the WP query seems to AND post_title and my_field. If I comment out this line, the WP query only searches in my_field. (I need WP to OR post_title and my_field.)
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'my_field',
'value' => $search_word,
'compare' => 'IN'
),
array(
'key' => 'post_title',
'value' => $search_word,
'compare' => 'IN',
)
)
);
//$query = new WP_Query( $args ); //Need to modify the existing WP_Query
$query->init();
$query->parse_query($args);
}
}
add_action( 'pre_get_posts', 'my_pre_get_posts_2' );
我需要这样做的原因是因为我需要修改“所有帖子”(管理员)页面中“搜索帖子”按钮的行为,这样无论管理员用户搜索什么,它都会返回帖子具有匹配的帖子标题或my_field值。
答案 0 :(得分:3)
要进行OR搜索,我尝试合并两个单独的WP_Query结果,如此处所示 - https://wordpress.stackexchange.com/questions/55519/can-i-merge-2-new-wp-queryvariable-s - 在guidod的答案中。这不是一个很好的解决方案,并导致不稳定的行为。
我找到的正确解决方案是使用WP自定义查询修改查询,如代码所示(需要进行一些修改) - http://codex.wordpress.org/Custom_Queries。