在首页和(或)feed里排除某个分类下的文章
写博客常会遇到奇怪的要求,比如想把某篇文章从首页和feed里清除掉,让大家看不到,但是又不想彻底删除它,只待某日恢复正身。我最近就遇到了这种情况,原因不多说。直接说方法。
前提
1、首页用的默认query,不是自建的my_query之类乱七八咋的东西。即说,在index.php文件里,是写的if(have_posts()) : while(have_posts()) : the_post();
,而不是$my_query->have_posts()
之类的东东。
2、你有能力找到该分类的id,查找方法最简单的就是找到“仪表盘”-“左侧栏”-“文章”-“分类目录”-找到对应的目录鼠标指向“编辑”-看链接里tag_id=xx。记下这个xx即是。
3、你可以更改functions.php文件。
具体方法
如上的内容确认之后,只需要把如下内容扔进functios.php文件里即可:
function some_cat_exclude($query) {
if ($query->is_feed || $query->is_home) {
$query->set('cat','-1,-2,-3,-4');
}
return $query;
}
add_filter('pre_get_posts','some_cat_exclude');
解释:第二行的is_feed,is_home都是用来判断适用场合的,我这里选择了feed和home都不输出。
如果你想改改其实很简单:如果想在搜索结果中排除用is_search;存档页面中排除用is_archive;其他场合类推或查询官方文档~~
扩展
我因为想把某篇老文章排除掉,让它隐藏起来,但是不想改变标题地址(因为某个分类下还有其他文章,不想再改变它的固定链接地址),所以,我用的办法是,新建了一个作者,然后把这篇文章chown,给该作者,然后类似上面的方法,把$query->set('cat','-1,-2,-3,-4');
改成
$query->set('author',-xxx);
之后,不管是对这篇文章进行更改日期,更改内容,更改标签等等操作,都不会对首页和feed的文章有影响。
这么一来,一些软文秘密的文章就可以瞒天过海了,并且不影响其他文章的结构,你说是不是很方便呢?
mark,虽然暂时用不上
我只是手动隐藏些黑历史
@A.shun 好奇是神马黑历史~~
这不奇怪,是真有这个需求!
真是厉害
问一下,能不能$query->set(‘cat’,’-1,-2,-3,-4′);和$query->set(‘author’,-xxx);同时使用
@天妈 多条件的话,得单独列出来
再问一下,你姓修?
@天妈 你姓天?
@axiu 我以为你姓修呢,因为我认识姓修的人。