默认情况下,WordPress 搜索结果显示发布的文章和页面,如果想把页面从 WordPress 搜索结果中排除,可以在当前主题的 functions.php
文件中添加如下的函数:
add_filter('pre_get_posts', function($wp_query){
if($wp_query->is_search){
$wp_query->set('post_type', 'post');
}
return $wp_query;
});
上面的代码把搜索查询结果的 post_type 设置为 post,即为文章,当然也可以设置为 page,搜索结果只为 page,比如 WooCommerce 插件加入的 product
post_type。上面的代码就会影响这些 post_type 在搜索结果中的显示,因为上面设置为搜索结果只能显示 post 这个默认的 post_type。
所以那么最好的方法是:将 page
的 post_type 对象的排除出搜索结果的属性设置为 true,这样就不会影响 WordPress 正常的搜索行为:
add_filter('register_post_type_args', function($args, $post_type){
iif($post_type == 'page'){
$args['exclude_from_search'] = true;
}
return $args;
}, 10, 2);