所以我从查询监视器中得到了这个:
AND (((zp_posts.post_title LIKE \'%mercedes%\')
OR (zp_posts.post_excerpt LIKE \'%mercedes%\')
OR (zp_posts.post_content LIKE \'%mercedes%\')))
AND zp_posts.post_type IN (\'post\', \'page\', \'attachment\')
AND (zp_posts.post_status = \'publish\'
OR zp_posts.post_author = 1
AND zp_posts.post_status = \'private\')
ORDER BY zp_posts.post_title LIKE \'%mercedes%\' DESC, zp_posts.post_date DESC
我希望搜索查询仅针对post\\u标题和post\\u内容,排除所有其他部分。有没有实现这一目标的想法?
最合适的回答,由SO网友:WebElaine 整理而成
您应该能够使用pre_get_posts
更改查询。我建议您创建一个自定义插件,这样,如果您更改了主题,您的修改仍将适用。
要开始,您可以通过以下方式设置要搜索的帖子类型:
function search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set(\'post_type\', array( \'post\' ) );
}
}
}
add_action(\'pre_get_posts\',\'search_filter\');
您将继续添加
$query->set
条件中的语句,以进一步自定义要搜索的字段。
另一种选择是编写一个完全自定义的查询,并从搜索中调用它,而不是使用WP的内置查询。您可能希望对该解决方案进行基准测试,以查看它是否比pre_get_posts
方法