Linux,  建站随笔,  网站搭建

使用function.php将特定分类的文章排除于首页显示

本文于2021年1月3日由AlvinCR更新

1.寻找分类目录的ID

进入网站后台,选择 文章-分类目录,选择想要实现此效果的目录,并点击编辑,这时会跳转到一个新网页。在url中的id=x,其中x就是需要的分类目录ID值。

2.添加功能函数

选择 外观-主题编辑器(不同主题名称不同,只要是存在编辑器二字即可)-模板函数(也就是functions.php)。(也可以建立子主题进行编辑)

在下面空白处随意添加以下脚本(别添加进其它函数中去了,最后还是在开头的空白处添加,如*/之后,function之前)

function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-x' ); //x便是要排除的分类ID
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );

补充

2021.1.3补充:

-x如果是多个值,中间使用逗号隔开,如:’-77,-27’,不要再新建一遍函数,这样只有第一个函数有效。

 

附:

exclude_category_home 定义排除目录策略。

query  在mysql中规定用于发送的SQL数据。

cat为category的缩写,将编号为x的目录赋值给query。

add_filter 将函数链接到过滤器动作中,而过滤器是wordpres中的钩子,截获即将送达浏览器窗口的文本,并将其过滤掉。

pre_get_posts是一个强大的文章过滤器,在这里用于过滤目录,功能类似于query_posts,但是可以和is_main_query连用来检测主查询。

 

对于我来说这个操作可以将不务正业的文章排除在首页…

比如:你在首页就看不到我的http://alvincr.com/2020/12/%e5%a4%a9%e9%99%85-npc%e9%a3%9e%e5%a4%a9/这篇文章。

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注