wordpress首页文章列表不显示指定分类文章

LMS
2K+ 14

本篇主要内容不是讲方法,而是向广大路过的大小侠客们求助:我想在wordpress首页文章列表的上方,单独显示某一个栏目的文章,要如何实现,代码要怎么写?请求帮助,谢谢!

关于以上的问题,我问了度娘,度娘告诉我的刚好相反,大部分人发的都是如何在首页排除某个分类下的文章,可能我的需求比较另类(我不是故意的)……

我发现在ChinaZ上一篇关于在首页不显示某分类的方法非常简单,所以抄袭如下,有没有什么安全隐患就不知道了。

1、获取不想显示的分类ID

这个ID号可以在后台的“文章 -> 分类目录”中获取,当鼠标放到某个分类目录时,浏览器底部的状态栏会显示类似 category&tag_ID=6&post_type=post 这样的链接,其中的“6”就是这个分类的ID。图就不贴了,应该很容易找到的,主要是下面的代码。

2、在主题index.php(现在应该是loop.php了)使用代码

假如我们要在首页隐藏ID为7和243的分类下的文章,可以在首页主题循环开始的地方加入query_posts($query_string .'&cat=-7,-243');,代码如下:

if ( have_posts() ) : query_posts($query_string .'&cat=-7,-243');
 while ( have_posts() ) : the_post();

有的人会简写成:

if ( have_posts() ) : query_posts($query_string .'&cat=-7,-243'); while ( have_posts() ) : the_post();

效果是一样的。

那个啥,抄袭完了,有谁知道我开始的那个问题的麻烦帮忙一下,抱拳谢谢!

2012.5.3更新

在度娘那找了几个主题研究了一下,原来在首页显示与不显示都是那个符号搞的鬼,分类ID前加负号(-)的就是不显示,如果要单独显示某分类下的文章,在ID前不加负号的就是显示了,晕啊。。。

如果使用代码后影响分页,可以在 if 前面加

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

通过钩子实现

这个方法安全无副作用,效果最好。

在 functions.php 文件里添加以下代码

//在首页中排除某些分类
function exclude_category_home($query){
  if($query->is_home){
    $query->set( 'cat', '-67, -842' ); //你要排除的分类ID
  }
  return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
文章目录
THE END

评论 14

  1. 问题是不知道,但通过你的文章,我搞定了指定分类的文章不在列表中呈现

  2. 博主您好,上述方法会导致WordPress文章排序出现从最旧的开始显示,即使我加入了排序方式也不起作用,请问博主这个怎么操作呢,谢谢。

  3. 如何不让他显示文字作者的评论啊

      1. 评论列表不是有访客的评论吗,如何不让他显示文字作者自己的评论

        1. 我还是没听明白,你说的和本文里写的内容应该是没关系的,你能不能详细说一下,你说的评论列表应该不是指文章下面的评论吧。

          1. 侧边栏 不是有个评论列表吗,如果作者自己回复给访客的评论会出现在哪里

            1. 你是说侧边栏的评论啊,wp默认的小工具是没法直接排除的,需要修改程序源文件,如果是别人主题的话,一般都有写在主题里,排除管理员邮箱就可以了,你下我的那个小米主题找sidebar文件研究一下就知道了。

  4. 问题早解决了吧?
    在循环上面加上一句就行了:

    把这个1改为你要调用的分类ID号。

    1. 已经搞定了谢谢,不过在评论里发代码是不显示的。

  5. 啊军
    🏅

    我的模版代码如下: 请帮忙看看如何修改呢。 按上面的方法不行哦

发表评论

Submit