在首页和(或)feed里排除某个分类下的文章

By
WP札记

写博客常会遇到奇怪的要求,比如想把某篇文章从首页和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的文章有影响。

这么一来,一些软文秘密的文章就可以瞒天过海了,并且不影响其他文章的结构,你说是不是很方便呢?

您已经发表过意见了!

Comments: 10

  1. mark,虽然暂时用不上
    我只是手动隐藏些黑历史

    2013年03月24日
  2. :oops: 请我博主,文章页面左上角的对我有帮助是如何实现的呢?

    2013年04月15日
  3. 这不奇怪,是真有这个需求!

    2013年05月26日
  4. 真是厉害 :?:

    2013年09月17日
  5. 问一下,能不能$query->set(‘cat’,’-1,-2,-3,-4′);和$query->set(‘author’,-xxx);同时使用 :lol:

    2013年09月17日
    • @天妈 多条件的话,得单独列出来

      @venmax 2013年09月17日
  6. 再问一下,你姓修?

    2013年09月17日
    • @天妈 你姓天?

      @venmax 2013年09月17日
    • @axiu 我以为你姓修呢,因为我认识姓修的人。

      2013年09月18日

发表评论

您的电子邮箱地址不会被公开。

*

:razz: