WordPress開發入門07:WP_Query 自定義迴圈

huangbangqing12發表於2018-07-08

當你使用自定義文章型別或自定義主題時,通常會看到使用WP_Query。瞭解它的工作原理並瞭解如何自定義它,是非常有幫助的。

codex文件上關於WP_Query的說明

然後,我們將在WordPress網站中檢視WP_Query,並講解如何使用它來自定義主題。

這是WP_Query在codex上詳細介紹的頁面:

點我跳轉

這個頁面首先介紹WP_Query的描述,並展示標準迴圈和一些替代的方法。

然後,在右側,它會顯示所有不同型別的引數,你可以使用這些引數自定義你希望顯示的迴圈以及應該滿足的條件

You must be logged in to view the hidden contents.

例如,如果只想顯示某類別的內容,這裡有作者引數、分類目錄引數或文章和頁面引數,文章狀態引數,自定義欄位引數以及其他許多引數。

自定義迴圈的不同方法

現在,我們就要進入相應的實戰開發了,我們在之前的章節中講過,WordPress開發最好是在子主題中進行。這是主題的百度網盤下載連結:

連結:https://pan.baidu.com/s/1nxmn5yT 密碼:ozfb

下載完成後,解壓,我把解壓後的所有檔案,全部拷貝到 twentyfifteen-child-theme 這個資料夾中

You must be logged in to view the hidden contents.

然後,我在我的網站上新增一個自定義頁面(注意這裡一定要使用子主題進行開發,如果沒有使用,父主題是沒有Custom Template模板這個頁面屬性的):

並通過“外觀” >> “小工具”。並確保我有一個頁面小工具,以便我可以瀏覽我的網站看到。

現在,來到網站前臺,在小工具掛件區域,可以看到剛剛建立的自定義模板頁面。點選進去,看到的是剛剛新增的三篇文章標題:

但是,我們建立頁面時,並沒有新增頁面的正文內容啊,為什麼會有這些內容呢

為什麼會有這些內容呢

現在,進入主題 twentyfifteen-child-theme 的資料夾中,並開啟page-custom.php,可以在這裡看到模板名稱”Custom Template”:這是剛剛在建立頁面時,“頁面屬性”下的模板。

<?php
/**
 * Template Name: Custom Template /***自定義模板***/
 */

然後,開始一個新的WP_Query

// The Query
$args = array(/***WP_Query所需的引數***/
    'post_type' => 'post',
);
$the_query = new WP_Query( $args ); /***建立WP_Query物件***/

// The Loop
if ( $the_query->have_posts() ) { /***有文章時,輸出所有文章的標題***/
    echo '<ul>';
    while ( $the_query->have_posts() ) {        
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';
} else {
    // no posts found /***沒有文章時,不輸出***/
}

使用WP_Query的一個需要注意的地方是:當你在一個頁面上使用多個查詢時,是需要重新設定post資料,以防其他可能會干擾的迴圈。

wp_reset_postdata();

在這裡,傳遞給WP_Query的引數是 post_type post 。所以,我們看到它顯示的是文章(post)

如果我們將 post_type 更改為 page

$args = array(
'post_type' => 'page',

來到網站前臺,輸出的就是頁面的標題

現在,改回為POST。然後讓回到WP_Query的文件中,來到“分頁”,在這裡有一個非常重要的是posts_per_page。它用來設定“要顯示的文章的數量”。所以如果我們要新增另外一個引數,我們會把一個逗號,posts_per_page,然後是數字1:

$args = array(
        'post_type' => 'post',
        'posts_per_page' => 1

來到網站前臺,重新整理,這裡就只會顯示一篇文章:

我們也可以自定義顯示的順序。在這裡我們看到升序降序

$args = array(
        'post_type' => 'post',
        'order' => "ASC"

來到網站前臺,重新整理,文章就會按照升序排序:

在這篇關於Wp_Query這篇文件中,還可以看到它很多其它的例子。

所以Wp_Query這個文件還有很多內容,它甚至允許你通過自定義欄位進行搜尋,並且做了很多來定製的輸出方式。我們現在就講到這裡。但是,鼓勵大家繼續深入瞭解這些內容,以便你可以瞭解使用WP_Query定製各種各樣的功能。

相關文章