如果你不希望在首页上显示上显示自己生活类的文章,而只显示一些新闻类的文章,那如何实现呢……

要做到这一点,你就需要在 The loop 中更改调用文章的函数。 WordPress 默认主题 Twenty Ten 和 Twenty Eleven 使用 the_post() 函数来调用所有的博客文章。

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

the_post() 函数使用 WP_Query 。我们可以使用 WP_Query 函数本身来自定义哪些文章被调用,或者哪些存档、分类、时间的文章可以显示在主页。

另外,我们还可以使用 query_posts 函数来控制 The Loop 循环。这种方法无疑是最好的,因为它并没有改变你的循环。下面讲讲这两种方法,你可以选择一个适合你的。

步骤/方法

1

使用函数 WP_Query


果你想改变你的主页显示效果,你需要编辑主题 index.php 文件。大部分主题使用 archive.php 文件来作为分类 (category) 、时间
(date) 、标签 (tag) 的的显示页面,
所以想更改某个存档页面只要修改 archive.php 文件就可以了。还有一些主题有专门的 category.php 、 date.php 、 tag.php
模板,修改相对应的就好。

大多数主题文件的循环会以 「Start the Loop」 开始。例如在 Twenty Eleven 主题中,看起来像这样:

<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>

需要替换为以下函数:

// 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 页面为每个参数都提供了例子,这里就不一一讲解具体用法了。

2

使用函数 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
<?php query_posts( $args ); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 『content』, get_post_format() ); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>

要显示某些分类的文章,你需要用到 cat 参数:

<?php query_posts( 『cat=1,5,6′ ); ?>

同样,要排除某些分类,你需要在前面添加减号:

<?php query_posts( 『cat=-3,-5′ ); ?>

还可以用来显示特定的文章:

query_posts( 『p=2′ );

要定义每页显示文章的数量,你可以使用 posts_per_page 参数:

query_posts( 『posts_per_page=5′ );

想要了解更多的信息,请访问 query_posts 页面。

使用插件来排除某些分类的文章

3

使用 WordPress 插件

对于那些对代码不太感冒的朋友,也可以使用 WordPress 插件。这里建议使用 Simply Exclude 和 Ultimate Category Excluder 。

Simply Exclude

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

Ultimate Category Excluder

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

总结

虽然 Simply Exclude 和 Ultimate Category Excluder 插件都很不错,但如果你有一定的编程基础,那么你还是手动修改吧。

注意事项

修改前请先备份好你的主题,万一弄错,只要恢复就可以了