WordPress首頁如何排除指定分類的文章

2012-01-31 10:47:21來源:laygle.com作者:雷格

今天看到有WordPress博主在問“WordPress博客首頁如何排除指定分類的文章?”。用戶為什么想這樣做的原因有很多,也許你不希望在首頁上顯示上顯示自己生活類的文章,而只顯示一些新聞類的文章。

今天看到有WordPress博主在問“WordPress博客首頁如何排除指定分類的文章?”。用戶為什么想這樣做的原因有很多,也許你不希望在首頁上顯示上顯示自己生活類的文章,而只顯示一些新聞類的文章。

要做到這一點,你就需要在 The loop 中更改調(diào)用文章的函數(shù)。WordPress默認(rèn)主題 Twenty Ten 和 Twenty Eleven 使用 the_post() 函數(shù)來調(diào)用所有的博客文章。

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

the_post() 函數(shù)使用 WP_Query。我們可以使用 WP_Query 函數(shù)本身來自定義哪些文章被調(diào)用,或者哪些存檔、分類、時間的文章可以顯示在主頁。

另外,我們還可以使用 query_posts 函數(shù)來控制 The Loop 循環(huán)。這種方法無疑是最好的,因為它并沒有改變你的循環(huán)。不過,兩種方法我都會講解,你可以選擇一個適合你的。

使用函數(shù)WP_Query

如果你想改變你的主頁顯示效果,你需要編輯你的主題index.php文件。大部分主題使用archive.php文件來作為分類 (category)、時間(date)、標(biāo)簽(tag)的的顯示頁面, 所以你想更改某個存檔頁面只要修改archive.php文件就可以了。還有一些主題有專門的category.php、date.php、 tag.php模板,修改相對應(yīng)的就好。

大多數(shù)主題文件的循環(huán)會以“Start the Loop”開始。例如在Twenty Eleven主題中,看起來像這樣:

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

你需要替換為以下函數(shù):

// The Query
$query = new WP_Query( $args );
 
// The Loop
while ( $query->have_posts() ) : $query->the_post();

要控制哪些文章在循環(huán)中顯示,你需要定義在WP_Query中的參數(shù),即修改 $query = new WP_Query( $args );.

目前有5種參數(shù),比較常用的是參數(shù)是 catcategory_name  。

若你要顯示你的 tech 分類,而它的分類ID是1,那么你可以使用參數(shù)cat:

$query = new WP_Query( 'cat=1' );

或者你可以使用參數(shù) category_name 來達(dá)到同樣的效果:

$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 參數(shù)來排除類別。

$query = new WP_Query( 'cat=-1' );

在上面說過,有5種參數(shù),我已經(jīng)講解了其中兩個:catcategory_name,都是從你的文章列表中包含或排除某些類別。

其他三個參數(shù)是 category_and、category_in和category_not_in。

category_and顯示多個分類的文章:

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

category_in是一個or函數(shù):

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

排除多個類別:

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

WP Query是一個非常靈活的功能函數(shù)。分類只是其中的一個參數(shù)而已,還可以使用:

  • Author Parameters – 顯示某個作者或多個作者的文章列表,也可以排除之。
  • Tag Parameters – 顯示或排除某些Tag的文章列表。
  • Taxonomy Parameters – 顯示一個或多個自定義分類的文章列表。.
  • Post & Page Parameters – 使用IDs 或 page slugs顯示某些特定的文章。
  • Type & Status Parameters – 顯示某些文章類型的文章或帶有附件的文章。
  • Pagination Parameters – 確定每頁顯示的文章數(shù)量。
  • Offset Parameter – 文章從某哪開始顯示。
  • Order & Orderby Parameters – 更改文章列表的排列順序。
  • Sticky Post Parameters – 顯示包括或排除置頂文章的文章列表。
  • Time Parameters – 顯示某些時間段的文章。
  • Custom Field Parameters – 顯示相關(guān)自定義字段的文章。
  • Permission Parameters – 顯示發(fā)布的或私密的文章。

WP_Query 頁面為每個參數(shù)都提供了例子,這里就不一一講解具體用法了。

使用函數(shù)query_posts

query_posts可以非常簡單的定制你在頁面上顯示的文章,而且你不必更改現(xiàn)有的循環(huán)代碼。

query_posts( $args );

要使用它的功能,你就必須在你的loop循環(huán)開始之前調(diào)用它。例如:

// The Query
query_posts( $args );
 
// The Loop
while ( have_posts() ) : the_post();

如果你計劃調(diào)用頁面中的第二個循環(huán),請確保你使用了wp_reset_query()來重置你的循環(huán)。例如:

// 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 參數(shù):

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

同樣,要排除某些分類,你需要在前面添加減號:

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

還可以用來顯示特定的文章:

query_posts( 'p=2' );

要定義每頁顯示文章的數(shù)量,你可以使用 posts_per_page 參數(shù):

query_posts( 'posts_per_page=5' );

想要了解更多的信息,請訪問query_posts頁面。

使用插件來排除某些分類的文章

對于那些對代碼不太感冒的朋友,也可以使用WordPress插件。這里建議使用Simply ExcludeUltimate Category Excluder

Simply Exclude

Simply Exclude可以讓你在首頁、歸檔頁、搜索頁、RSS中排除或包含某些分類、作者、標(biāo)簽的文章,使用起來也非常簡單。

simply-exclude

 

Ultimate Category Excluder

Ultimate Category Excluder,能讓你容易的排除某些分類在主頁、存檔頁和RSS中。不同于Simply Exclude的是他只能排除某些分類,不能排除作者、標(biāo)簽等。

ultimate-category-excluder

 

總結(jié)

雖然Simply ExcludeUltimate Category Excluder插件都很不錯,但如果你有一定的編程基礎(chǔ),那么你還是手動修改吧。

原文:http://laygle.com/2012/01/wordpress-exclude-categories/
關(guān)鍵詞:WordPress

贊助商鏈接: