北极寒流 » 网络资源 » wordpress首页排除指定分类文章 - 2014.08.11

wordpress首页排除指定分类文章

wordpress博客默认显示的都是网站的最新文章,即所有分类都会按照时间顺序显示。但是有时我们或许并不希望某些分类出现在首页的文章列表中。那么,我们该怎么做呢?

其实要实现方法并不难,如果想将一些特定分类中的文章不在首页显示,下面的方法可以帮你很方便地从首页排除特定分类的文章。

复制下面的代码到你的主题functions.php文件:

function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-2, -7' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );

其中的第三行:'-2, -7'就是分类ID,注意分类ID用半角(英文)逗号隔开,每个ID前面必须加上负号。

如果数字ID前不加“-”就表示只显示这几个分类的文章。

如果你希望feed、搜索页面也不显示你要排除的分类文章,那么只要把上面的

if ( $query->is_home ) {

换成

if ($query->is_feed || $query->is_home || $query->is_ search) {

即可

或者你还可以采用下面的方法实现wordpress首页排除指定分类文章

修改首页调用文章的模板

首页一般为使用的主题目录下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(); ?>

如果上面方法已经达到了你要的效果,并且可以正常翻页,未出现问题,你可以不要再看下面方法了。

找到:

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

修改为:

<?php
if (is_home()) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('category__not_in'   => array(2,7),
'paged' => $paged);
query_posts($args);
}
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>

11

wordpress首页排除指定分类文章

分享到:

最受欢迎的