最近在自己网站上搜索之前发布的文章发现“网站地图”的页面也会显示出来,当然其他的一些页面也会显示出来。但是,对于网站上发布的内容而言,我们往往将对访客有用的信息以文章的形式进行发布,而诸如“关于我们”、“网站地图”、“读者墙”、“留言板”之类的功能性页面访客搜来基本上毫无用处,为了良好的访客体验,对于这一类页面我们还是选择屏蔽掉。下面是我整理的几种在搜索页面不显示特定文章及页面的方法以供参考学习。

排除特定 ID 的文章或页面

//搜索结果排除特定 ID 的文章或页面
function search_filter_id($query) {
 if ( !$query->is_admin && $query->is_search) {
 $query->set('post__not_in', array(40,819));//这里填写指定文章或者页面的ID
 }
 return $query;
}
add_filter('pre_get_posts','search_filter_id');

排除指定分类下的文章

//搜索结果排除某些分类的文章
function search_filter_category( $query) {
 if ( !$query->is_admin && $query->is_search) {
 $query->set('cat','-16,-66'); //分类的ID,前面加负号表示排除;如果直接写ID,则表示只在该ID中搜索
 }
 return $query;
}
add_filter('pre_get_posts','search_filter_category');

排除全部页面

//搜索结果排除所有页面
function search_filter_page($query) {
 if ($query->is_search) {
 $query->set('post_type', 'post');
 }
 return $query;
}
add_filter('pre_get_posts','search_filter_page');