WordPress首页不显示特定分类文章

WordPress动态首页是默认显示所有文章的,按时间排序,但是有时候想让某个分类文章不在主页显示而是在特定的分类页面显示,比如我想做一个类似QQ说说,人人状态的页面,发布的posts一般很短,不宜显示在首页,这时就要让首页不显示特定分类文章。

如大家所见,本博首页已经不显示关于Wordpress的文章了(为了要照顾广大读者朋友们)。当然其实 WordPress 让某分类文章不显示在首页的方法很简单:一是用插件,如 Advanced Category Excluder;二是用本文提到的代码。

  首页排除特定分类方法

1、首先需要获取特定分类的ID。这个ID号可以在后台的“文章 -> 分类目录”中获取,当鼠标放到某个分类目录时,浏览器底部的状态栏会显示类似“category&tag_ID=2&post_type=post”这样的链接,其中的“2”就是这个分类的ID。

WordPress首页不显示特定分类文章

  category id

  2、修改首页调用文章的模板

首页一般为使用的主题目录下index.php文件,打开编辑,找到类似如下代码:

<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>

修改为(2为要排除的分类):

<?php if ( have_posts() ) : query_posts($query_string .'&cat=-2'); while ( have_posts() ) : the_post(); ?>

即可。

今天在看到了另外一种实现方式,该方法通过钩子实现,将以下代码放至 function.php 中即可

add_action( 'pre_get_posts', 'remove_cat_from_query' );

function remove_cat_from_query( $query ) {
  if ( is_home() && $query->is_main_query() )
    $query->set( 'category__not_in', array( 1 ) );
  return $query;
}

您可能对以下内容感兴趣

发表评论

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