某个目录下有大量同类的的文章,目的是为了方便用户的查询,诉求是当用户查询时,不需要翻页或者页面搜索就能直接获取到所查找的信息,文章篇幅都比较短,主页展现也相对接近。虽然这样一来,查找起来方便了很多,但是也带来了一个问题,同类文章占比太大,影响了其他类目的展现,主循环中大片大片的相同缩略图类似标题的文章,看着也有点像贴小广告的。
最初的考虑是排除掉文章所在的目录,但是同目录中也有一些其他的文章,屏蔽目录之后也被无情的排除在外了,所以最后考虑利用标签来做一个筛选。
同目录直接加上一个负号不同,排除标签有专用的参数'tag__not_in',如果需要在循环中排除某个标签的文章,可以利用以下的代码,将以下代码复制到主题的function.php,就可以实现在除搜索页以外的任何循环内屏蔽指定标签的文章:
/*==========
循环时按标签排除文章
==========*/
function custom_exclude_tags( $query ) {
if ( !$query->is_search ) { //仅在搜索时展现
$query->set( 'tag__not_in', '39' );
}
}
add_action( 'pre_get_posts', 'custom_exclude_tags' );
这个排除的有点彻底,即便是在后台,这个标签下的文章也需要搜索后才能得以展现,如果觉得这样不是很方便,也可以换一种方式:
/*==========
循环时按标签排除文章
==========*/
function custom_exclude_tags( $query ) {
if ( $query->is_home ) { //判断是否是首页
$query->set( 'tag__not_in', '39' );
}
}
add_action( 'pre_get_posts', 'custom_exclude_tags' );