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