如果你不希望在首頁上顯示上顯示自己生活類的文章,而只顯示一些新聞類的文章,那如何實現呢……
要做到這一點,你就需要在 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 插件都很不錯,但如果你有一定的編程基礎,那麼你還是手動修改吧。
注意事項
修改前請先備份好你的主題,萬一弄錯,只要恢復就可以了