默认情况下,WordPress 搜索结果显示发布的文章和页面,如果想把页面从 WordPress 搜索结果中排除,可以在当前主题的 functions.php 文件中添加如下的函数:

WordPress小技巧之从搜索结果中排除页面插图
WordPress小技巧之从搜索结果中排除页面

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,也就是文章,或者是网页,而搜索结果仅为网页。

如果 WordPress安装的其它插件有其它post_type,而post_type又支持在搜索结果中的显示,例如 WooCommerce插件添加了 productpost_type,以上的代码将会影响到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);