可以我自己解决的。我不知道出了什么问题,但看起来使用第一种情况是行不通的。使用第二种情况是个坏主意。
因此,我开始使用sql和posts\\u where命令。
first: 而不是$wp_query->query_vars[\'s\']
我开始使用get_search_query()
second: 看起来,当sql尝试将meta\\u值与value进行比较时,它会要求%
. 是的,所以在sql代码中,您应该编写如下内容:
wp_postmeta.meta_key LIKE \\\'_entitle\\\' AND wp_postmeta.meta_value LIKE \\\'%\' . get_search_query() . \'%\\\'
third: 由于您使用的是wp\\U Posteta,因此必须将其帖子ID与wp\\U帖子的ID连接起来:
function dasdasd( $join, $query ) {
global $wpdb;
if ( is_search() ) {
$join = \'INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )\';
}
return $join;
}
add_filter(\'posts_join\', \'dasdasd\', 10, 2 );
以及
fourth: 我不知道为什么,但您必须添加groupby代码:
add_filter( \'posts_groupby\', \'adadad\', 10, 2 );
function adadad( $groupby, $query ){
$groupby = \'wp_posts.ID\';
return $groupby;
}
我想知道第四步有什么问题,为什么groupby的存在对搜索查询如此重要。非常感谢。