WordPress如何排除指定分类的文章 wp特定分类调用四种方法

一般WordPress主题的首页文件index.php中默认都是输出所有分类的日志,但是我们有时候不希望某个分类的内容显示到首页上面,有没有办法让WordPress首页不显示指定分类的文章呢?答案是肯定的,而且方法还不止是一种,楚狂人用了两天时间来寻找和测试,确定了以下几种方法是有效的:

方法一:使用query_posts() 函数

WordPress 默认模板中,主循环调用所有文章的方式如下:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; ?>
<?php endif; ?>

如果我们要排除某分类,可以使用 query_posts() 函数。
1、要显示某些分类的文章,可以用cat参数来指定,如:
<?php query_posts( ‘cat=1,5′ ); ?>
表示调用分类ID为1和5的分类文章
2、要排除某些分类,只要在前面添加减号:
<?php query_posts( ‘cat=-1,-5′ ); ?>
表示不调用分类ID为1和5的分类文章.

还可以用来显示特定的文章:
query_posts( ‘p=2′ );
要定义显示文章的数量,你可以使用 posts_per_page 参数:
query_posts( ‘posts_per_page=5′ );

有的文章说需要在php endwhile;后面添加wp_reset_query();既这样<?php endwhile;wp_reset_query(); ?>,这个是何道理我还没搞懂,测试了一下不加也可以。

方法二:使用WP_Query函数:
要控制哪些文章在循环中显示,需要定义在WP_Query中的参数,即修改

$query = new WP_Query( $args );.

目前有5种参数,比较常用的是参数是 cat 和 category_name 。

若你要显示你的 tech 分类,而它的分类ID是1,那么你可以使用参数cat:

$query = new WP_Query( ‘cat=1′ );

或者可以使用参数 category_name 来达到同样的效果:

$query = new WP_Query( ‘category_name=tech’ );

若想多添加几个分类,则需要用逗号分隔。

$query = new WP_Query( ‘cat=1,7,121′ );

$query = new WP_Query( ‘category_name=news,reviews,tutorials’ );

在分类ID前加上减号来排除某一类的所有文章。注意,不可以使用category_name 参数来排除类别。

$query = new WP_Query( ‘cat=-1′ );

cat 和 category_name,都是从文章列表中包含或排除某些类别。

其他三个参数是 category_and、category_in和category_not_in。

category_and显示多个分类的文章:

$query = new WP_Query( array( ‘category__and’ => array( 1, 7 ) ) );

category_in是一个or函数:

$query = new WP_Query( array( ‘category__in’ => array( 7, 127 ) ) );

排除多个类别:

$query = new WP_Query( array( ‘category__not_in’ => array( 2, 6 ) ) );

方法三:修改functions.php文件

在functions.php文件的?>符号前面添加如下代码:
function custom_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( ‘cat’, ‘-7’ );  //-7表示需要排除的分类目录
}
}
add_action( ‘pre_get_posts’, ‘custom_exclude_category’ );

方法四:使用WordPress插件(Simply Exclude和Ultimate Category Excluder)

对代码不熟悉的朋友也可以使用以下两款WordPress分类控制插件

Simply Exclude:可以让你在首页、归档页、搜索页、RSS中排除或包含某些分类、作者、标签的文章,使用起来也非常简单。

Ultimate Category Excluder:能让你容易的排除某些分类在主页、存档页和RSS中。不同于Simply Exclude的是他只能排除某些分类,不能排除作者、标签等。

赞(1) 领红包
转载注明:楚狂人博客 » WordPress如何排除指定分类的文章 wp特定分类调用四种方法

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #2

    这篇文字非常酷,非常好。有时候我们在写一个博客,或者加入某些产品的时候就非常需要,某个页面做特定的调用。这样一来,我觉得是不是我们只需要在需要指定特殊调用某个分类文章的时候添加函数即可?

    麦宜昌 6年前 (2013-08-05) 来自天朝的朋友 未知浏览器 Unknow Os 回复
  2. #1

    来看看,IT人士 O(∩_∩)O~~

    正仔 6年前 (2013-04-02) 来自天朝的朋友 未知浏览器 Unknow Os 回复

扫码领红包 或者 支付宝搜索:5981405

支付宝扫一扫打赏