《PHP實例:WordPress中查詢文章的循環Loop結構及用法分析》要點:
本文介紹了PHP實例:WordPress中查詢文章的循環Loop結構及用法分析,希望對您有用。如果有疑問,可以聯系我們。
PHP編程WordPress 上獲取文章最重要的就是循環(Loop),事實上循環就是去數據庫查詢到相應的文章,然后暫時儲存到全局變量里邊,需要的時候一篇一篇的輸出出來,WordPress 的循環設計的非常好,完成一次循環需要執行 2000 多行代碼,而你在使用循環的時候看到的只是一個簡單 while 循環加上幾個函數,初學者也很好理解.
PHP編程
<?php
if( have_posts() ):
while( have_posts() ):
the_post();
endwhile;
endif;
?>
PHP編程上邊就是一個普通的主循環結構,首先用 have_posts() 函數判斷是否有文章,有則用 while 語句循環,在循環體里邊調用 the_posts() 函數,the_posts() 函數用來告訴 WordPress 核心的查詢類,已經查過一篇文章了,每調用一次 the_posts(),循環中的當前文章就會改變.
PHP編程當調用幾次 the_posts() 之后,文章已經全部循環完畢,就讓 have_posts() 函數返回 False 來結束循環,所以,一個普通的循環應該是這樣的:
PHP編程
<?php if( have_posts() ): ?>
<ul>
<?php while( have_posts() ):the_post();?>
<li <?php post_class(); ?>>
<?php the_title( '<h3>', '</h3>' ); ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
PHP編程WP_Query類
PHP編程循環中所用到的辦法都是來自于WP_Query類,這里再對WP_Query類做一下科普:
WP_Query 類的功能包括處理查詢條件、去數據庫獲取文章、整理和儲存文章、文章循環、根據文章查詢條件判斷頁面類型.
屬性
PHP編程$query
PHP編程傳入的查詢條件.
PHP編程$query_vars
PHP編程處理 $query 得到的可以使用的查詢條件.
PHP編程$queried_object
PHP編程根據查詢類型給出的查詢歸屬.比如如果是根據分類查詢,那么返回一個包含分類信息的類;如果是標簽頁則返回包含標簽信息的類;作者頁等以此類推.
PHP編程$queried_object_id
PHP編程返回 $queried_object 的 ID.比如分類就是分類 ID;標簽就是標簽 ID;以此類推.
PHP編程$posts
PHP編程從數據庫中查詢到的文章和文章信息被以數組的形式儲存在這個變量里,每篇文章是一個從 WP_Post 類實例化的對象.
PHP編程$post_count
PHP編程當前文章數量,換句話說就是 $posts 變量里存儲了幾篇文章.
PHP編程$found_posts
PHP編程統計如果不啟用分頁會有多少文章.
PHP編程$max_num_pages
PHP編程總頁數,當前文章被分成幾頁.
PHP編程$current_post
PHP編程當前文章的索引值.在循環中,開始循環 $current_post 為 C1,每循環一次則加 1,它表示當前循環到的文章在 $posts 變量(數組)中的索引值.
PHP編程$post
PHP編程循環中當前的文章,是一個包含文章和文章信息通過 WP_Post 類實例化的對象.
PHP編程$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
PHP編程根據查詢條件判斷當前是什么頁面,然后儲存在些變量里,詳情可以參考 《 WordPress 頁面判斷函數 》.
PHP編程辦法
PHP編程init()
PHP編程初始化對象,所有屬性設置為 null、-1、0 或 False,刪除一些屬性.
PHP編程parse_query( $query )
PHP編程解析并保存查詢字符串.
PHP編程parse_query_vars()
PHP編程在之前的 WordPress 版本中和 parse_query() 一樣的功能,現在直接調用 parse_query() 就好了.
PHP編程get( $query_var )
PHP編程根據名字獲取一個查詢條件.
PHP編程set( $query_var, $value )
PHP編程設置一個查詢條件.
PHP編程get_posts()
PHP編程根據現有的查詢條件去數據庫獲取文章,并保存在 $posts 屬性里,同時設置好 $post_count 屬性.此函數的返回值就是存儲文章的 $posts 屬性.
PHP編程next_post()
PHP編程(循環控制)將 $current_post 加 1,也就是把當前文章向前推進一篇,同時把推進后的當前文章添加到 $post 屬性里,然后返回 $post 屬性.
PHP編程the_post()
PHP編程(循環控制)進入下一篇文章,調用 next_post() 函數,然后把推進后的當前文章導入到全局變量里邊.
PHP編程have_posts()
PHP編程(循環控制)判斷循環是否完成,如果所有文章都循環完畢或者根本就沒有文章則返回 False.
PHP編程rewind_posts()
PHP編程(循環控制)跳到循環開頭.相當于重置 $current_post 屬性和 $post 屬性.
PHP編程query( $query )
PHP編程查詢文章,包括調用 init() 辦法、parse_query() 辦法和 get_posts() 辦法,并返回 get_posts() 辦法的返回值,用此函數可以完成一個文章查詢的完整操作.
PHP編程get_queried_object()
PHP編程生成 $queried_object 屬性,如果已經存在則直接返回 $queried_object 屬性,所以說,因為默認 $queried_object 是不存在的,想要調用 $queried_object 屬性一定要直接使用 get_queried_object() 辦法.
PHP編程get_queried_object_id()
PHP編程生成 $queried_object_id 屬性,如果已經存在則直接返回 $queried_object_id 屬性.類似 get_queried_object() 辦法.
PHP編程WP_Query( $query = '' ) , __constructor( $query = '' )
PHP編程WP_Query 類的構造函數,實例化類的時候自己調用,如果你傳入一個查詢條件,它會自動調用 query() 辦法幫你查詢文章.
歡迎參與《PHP實例:WordPress中查詢文章的循環Loop結構及用法分析》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8229.html