這篇文章將為大家詳細講解有關(guān)WordPress中查詢文章的循環(huán)Loop結(jié)構(gòu)怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站專注于濱湖網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供濱湖營銷型網(wǎng)站建設(shè),濱湖網(wǎng)站制作、濱湖網(wǎng)頁設(shè)計、濱湖網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造濱湖網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供濱湖網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。WordPress 上獲取文章最重要的就是循環(huán)(Loop),事實上循環(huán)就是去數(shù)據(jù)庫查詢到相應(yīng)的文章,然后暫時儲存到全局變量里邊,需要的時候一篇一篇的輸出出來,WordPress 的循環(huán)設(shè)計的非常好,完成一次循環(huán)需要執(zhí)行 2000 多行代碼,而你在使用循環(huán)的時候看到的只是一個簡單 while 循環(huán)加上幾個函數(shù),初學者也很好理解。
<?php if( have_posts() ): while( have_posts() ): the_post(); endwhile; endif; ?>
上邊就是一個普通的主循環(huán)結(jié)構(gòu),首先用 have_posts() 函數(shù)判斷是否有文章,有則用 while 語句循環(huán),在循環(huán)體里邊調(diào)用 the_posts() 函數(shù),the_posts() 函數(shù)用來告訴 WordPress 核心的查詢類,已經(jīng)查過一篇文章了,每調(diào)用一次 the_posts(),循環(huán)中的當前文章就會改變。
當調(diào)用幾次 the_posts() 之后,文章已經(jīng)全部循環(huán)完畢,就讓 have_posts() 函數(shù)返回 False 來結(jié)束循環(huán),所以,一個普通的循環(huán)應(yīng)該是這樣的:
<?php if( have_posts() ): ?> <ul> <?php while( have_posts() ):the_post();?> <li <?php post_class(); ?>> <?php the_title( '<h4>', '</h4>' ); ?> </li> <?php endwhile; ?> </ul> <?php endif; ?>
WP_Query類
循環(huán)中所用到的方法都是來自于WP_Query類,這里再對WP_Query類做一下科普:
WP_Query 類的功能包括處理查詢條件、去數(shù)據(jù)庫獲取文章、整理和儲存文章、文章循環(huán)、根據(jù)文章查詢條件判斷頁面類型。
屬性
$query
傳入的查詢條件。
$query_vars
處理 $query 得到的可以使用的查詢條件。
$queried_object
根據(jù)查詢類型給出的查詢歸屬。比如如果是根據(jù)分類查詢,那么返回一個包含分類信息的類;如果是標簽頁則返回包含標簽信息的類;作者頁等以此類推。
$queried_object_id
返回 $queried_object 的 ID.比如分類就是分類 ID;標簽就是標簽 ID;以此類推。
$posts
從數(shù)據(jù)庫中查詢到的文章和文章信息被以數(shù)組的形式儲存在這個變量里,每篇文章是一個從 WP_Post 類實例化的對象。
$post_count
當前文章數(shù)量,換句話說就是 $posts 變量里存儲了幾篇文章。
$found_posts
統(tǒng)計如果不啟用分頁會有多少文章。
$max_num_pages
總頁數(shù),當前文章被分成幾頁。
$current_post
當前文章的索引值。在循環(huán)中,開始循環(huán) $current_post 為 –1,每循環(huán)一次則加 1,它表示當前循環(huán)到的文章在 $posts 變量(數(shù)組)中的索引值。
$post
循環(huán)中當前的文章,是一個包含文章和文章信息通過 WP_Post 類實例化的對象。
$is_single, $is_page, $is_archive, $is_preview, $is_date, $is_year, $is_month, $is_time, $is_author, $is_category, $is_tag, $is_tax, $is_search, $is_feed, $is_comment_feed, $is_trackback, $is_home, $is_404, $is_comments_popup, $is_admin, $is_attachment, $is_singular, $is_robots, $is_posts_page, $is_paged
根據(jù)查詢條件判斷當前是什么頁面,然后儲存在些變量里,詳情可以參考 《 WordPress 頁面判斷函數(shù) 》。
方法
init()
初始化對象,所有屬性設(shè)置為 null、-1、0 或 False,刪除一些屬性。
parse_query( $query )
解析并保存查詢字符串。
parse_query_vars()
在之前的 WordPress 版本中和 parse_query() 一樣的功能,現(xiàn)在直接調(diào)用 parse_query() 就好了。
get( $query_var )
根據(jù)名字獲取一個查詢條件。
set( $query_var, $value )
設(shè)置一個查詢條件。
get_posts()
根據(jù)現(xiàn)有的查詢條件去數(shù)據(jù)庫獲取文章,并保存在 $posts 屬性里,同時設(shè)置好 $post_count 屬性。此函數(shù)的返回值就是存儲文章的 $posts 屬性。
next_post()
(循環(huán)控制)將 $current_post 加 1,也就是把當前文章向前推進一篇,同時把推進后的當前文章添加到 $post 屬性里,然后返回 $post 屬性。
the_post()
(循環(huán)控制)進入下一篇文章,調(diào)用 next_post() 函數(shù),然后把推進后的當前文章導(dǎo)入到全局變量里邊。
have_posts()
(循環(huán)控制)判斷循環(huán)是否完成,如果所有文章都循環(huán)完畢或者根本就沒有文章則返回 False.
rewind_posts()
(循環(huán)控制)跳到循環(huán)開頭。相當于重置 $current_post 屬性和 $post 屬性。
query( $query )
查詢文章,包括調(diào)用 init() 方法、parse_query() 方法和 get_posts() 方法,并返回 get_posts() 方法的返回值,用此函數(shù)可以完成一個文章查詢的完整操作。
get_queried_object()
生成 $queried_object 屬性,如果已經(jīng)存在則直接返回 $queried_object 屬性,所以說,因為默認 $queried_object 是不存在的,想要調(diào)用 $queried_object 屬性一定要直接使用 get_queried_object() 方法。
get_queried_object_id()
生成 $queried_object_id 屬性,如果已經(jīng)存在則直接返回 $queried_object_id 屬性。類似 get_queried_object() 方法。
WP_Query( $query = '' ) , __constructor( $query = '' )
WP_Query 類的構(gòu)造函數(shù),實例化類的時候自己調(diào)用,如果你傳入一個查詢條件,它會自動調(diào)用 query() 方法幫你查詢文章。
關(guān)于“WordPress中查詢文章的循環(huán)Loop結(jié)構(gòu)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
當前名稱:WordPress中查詢文章的循環(huán)Loop結(jié)構(gòu)怎么用-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://vcdvsql.cn/article6/dsddig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、關(guān)鍵詞優(yōu)化、虛擬主機、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)