WordPress排除指定分类的文章的方法

发布时间:2020-03-17编辑:脚本学堂
本文介绍下,在wordpress中排除掉指定分类下的文章的方法,只用来显示特定的一些分类文章。感兴趣的朋友参考下。

本节内容:
wordpress排除指定分类的文章

如何在wordpress模板中只显示特定分类的文章呢?
需要在 The loop 中更改调用文章的函数。WordPress默认主题 Twenty Ten 和 Twenty Eleven 使用 the_post() 函数来调用所有的博客文章。

the_post() 函数使用 WP_Query。我们可以使用 WP_Query 函数本身来自定义哪些文章被调用,或者哪些存档、分类、时间的文章可以显示在主页。
另外,我们还可以使用 query_posts 函数来控制 The Loop 循环。这种方法无疑是最好的,因为它并没有改变你的循环。下面讲讲这两种方法,你可以选择一个适合你的。
方法一:使用函数WP_Query
如果你想改变你的主页显示效果,你需要编辑主题index.php文件。大部分主题使用archive.php文件来作为分类(category)、时间(date)、标签(tag)的的显示页面, 所以想更改某个存档页面只要修改archive.php文件就可以了。还有一些主题有专门的category.php、date.php、tag.php模板,修改相对应的就好。
大多数主题文件的循环会以“Start the Loop”开始。例如在Twenty Eleven主题中,看起来像这样:

需要替换为以下函数:
 

复制代码 代码示例:
// The Query
$query = new WP_Query( $args );
// The Loop
while ( $query->have_posts() ) : $query->the_post();
 

要控制哪些文章在循环中显示,需要定义在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′ );
 

在上面说过,有5种参数,我已经讲解了其中两个: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 ) ) );
 

WP Query是一个非常灵活的功能函数。分类只是其中的一个参数而已,还可以使用:
 

Author Parameters – 显示某个作者或多个作者的文章列表,也可以排除之。
Tag Parameters – 显示或排除某些Tag的文章列表。
Taxonomy Parameters – 显示一个或多个自定义分类的文章列表。.
Post & Page Parameters – 使用IDs 或 page slugs显示某些特定的文章。
Type & Status Parameters – 显示某些文章类型的文章或带有附件的文章。
Pagination Parameters – 确定每页显示的文章数量。
Offset Parameter – 文章从某哪开始显示。
Order & Orderby Parameters – 更改文章列表的排列顺序。
Sticky Post Parameters – 显示包括或排除置顶文章的文章列表。
Time Parameters – 显示某些时间段的文章。
Custom Field Parameters – 显示相关自定义字段的文章。
Permission Parameters – 显示发布的或私密的文章。

WP_Query 页面为每个参数都提供了例子。

方法二:使用函数query_posts
query_posts可以非常简单的定制你在页面上显示的文章,而且你不必更改现有的循环代码。
 

复制代码 代码示例:
query_posts( $args );

要使用它的功能,你就必须在你的loop循环开始之前调用它。

例如:
 

复制代码 代码示例:
// The Query
query_posts( $args );
// The Loop
while ( have_posts() ) : the_post();

如果计划调用页面中的第二个循环,请确保使用了wp_reset_query()来重置你的循环。

例如:
 

// The Query
要显示某些分类的文章,需要用到 cat 参数:
同样,要排除某些分类,你需要在前面添加减号:
显示特定的文章:
query_posts( ‘p=2′ );

定义每页显示文章的数量,使用 posts_per_page 参数:
query_posts( ‘posts_per_page=5′ );

更多信息,请访问query_posts页面。