WordPress開發入門07:WP_Query 自定義迴圈
當你使用自定義文章型別或自定義主題時,通常會看到使用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定製各種各樣的功能。
相關文章
- WordPress開發入門08:自定義函式和WordPress鉤子函式
- WordPress開發入門06:條件判斷與迴圈
- WordPress入門07-WordPress新建頁面和管理頁面
- WordPress開發入門09:WordPress編碼標準
- WordPress開發入門05:模板標籤
- Python基礎(07):迴圈Python
- c#入門-while迴圈C#While
- 【廖雪峰python入門筆記】for迴圈Python筆記
- 自定義雙向迴圈連結串列基本函式介面函式
- 讓自定義的容器,也能基於範圍迴圈
- WordPress開發入門02:WordPress中不同目錄型別的PHP檔案型別PHP
- WordPress開發入門01:Windows本地安裝WordPress和PHP除錯環境WindowsPHP除錯
- Android 自定義 View 之入門篇AndroidView
- Python中for迴圈和while迴圈有什麼區別?Python入門教程PythonWhile
- Java入門系列-09-迴圈結構Java
- 【廖雪峰python入門筆記】while迴圈Python筆記While
- 【廖雪峰python入門筆記】多重迴圈Python筆記
- Python趣味入門5:迴圈語句whilePythonWhile
- Android 入門(三)簡單自定義 ViewAndroidView
- webpack 快速入門 系列 - 自定義 wepack 上Web
- WordPress入門09-WordPress基本設定
- javascript新手入門之條件語句,迴圈JavaScript
- Shader從入門到跑路:自定義紋理輸入
- iOS開發使用UIKeyInput自定義密碼輸入框iOSUI密碼
- Go的100天之旅-07條件和迴圈Go
- 2020-11-18 Vue-07迴圈遍歷Vue
- WordPress開發入門03:編輯PHP檔案的2個方式PHP
- web前端開發教程-while迴圈Web前端While
- WordPress入門03-如何登入WordPress網站後臺網站
- Django 自定義管理命令:從入門到高階Django
- SpringBoot入門(二):日誌及自定義屬性Spring Boot
- FlinkSQL自定義函式開發SQL函式
- Vue 3自定義指令開發Vue
- 小程式自定義音訊元件,帶滾動條,IOS迴圈失效問題音訊元件iOS
- 短視訊直播原始碼,自定義圖片或視訊的迴圈播放原始碼
- Custom Post Types [2.1.14] - WordPress高階自定義外掛
- C#快速入門教程(14)—— 迴圈語句結構C#
- Go語言入門教程系列——函式、迴圈與分支Go函式