#歡迎來到「掌握 WP_Query」系列的另一部分。到目前為止我們做得怎麼樣?我希望您喜歡這些教程,就像我們喜歡編寫它們一樣。
在本教學中,您將了解 WP_Query
類別的屬性和方法。但首先,我認為討論一下類別中的“屬性”和“方法”是合適的。
我們可以嗎?
在 PHP 中,有一種更簡潔的方式編寫程式碼:物件導向編程,或 OOP。對於 OOP,我們使用「類別」作為藍圖 — 我從 Code Tuts 的一篇經典帖子中獲取了這個術語,Jason Lengstorf 的「物件導向的 PHP 初學者」:
例如,類別就像房子的藍圖。它在紙上定義了房子的形狀,清楚地定義和規劃了房子不同部分之間的關係,即使房子並不存在。
(請記住 WP_Query
是 WordPress 核心的重要類別。)
當您理解 PHP 類別的概念時,「屬性」和「方法」就會變得非常容易理解,因為這些單字只是「變數」和「函數」的同義詞。是的,屬性是 PHP 類別的變數,方法是 PHP 類別的函數。
現在我們已經介紹了它們是什麼,讓我們來了解每個屬性和方法。
警告:直接更改屬性是不明智的。正如 Codex 所說,您應該使用 WP_Query
的方法與它們互動。
讓我們從 WP_Query
類別的屬性或變數開始。
$query
此屬性儲存傳遞給 $wp_query
物件的查詢。
$query_vars
此屬性儲存 $query
的變數(及其值)的關聯數組。
$queried_object
此屬性儲存目前查詢的對象,如 $post
物件(如果是 post 查詢)或 $author
物件(如果是作者查詢)。
$queried_object_id
該屬性儲存查詢物件的ID。
$posts
此屬性儲存從查詢傳回的貼文。
$post_count
此屬性儲存目前查詢的貼文數。
$found_posts
此屬性儲存 SQL 查詢中不包含 LIMIT
子句的貼文數量。
$max_num_pages
此屬性儲存頁數 - 計算方法是將 $found_posts
除以 $posts_per_page
。
$current_post
該屬性儲存循環中目前項目的索引號。例如,如果循環剛開始,則為 -1
,並且透過 next_post()
方法遞增。
$post
這個屬性儲存目前的貼文。
$is_{conditional}
以下屬性儲存為布林值,提供有關目前貼文狀態的資訊:
$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
:檢查是否是 feed。 $is_comment_feed
:檢查是否是評論動態。 $is_trackback
:檢查是否是引用。 $is_home
:檢查是否為部落格主頁。 $is_404
:檢查是否為404錯誤頁面。 $is_comments_popup
: 檢查是否為註解彈出視窗。 $is_admin
: 檢查是否為管理面板。 $is_attachment
: 檢查是否為附件。 $is_singular
:檢查是否是任何貼文類型(包括「附件」和「頁面」貼文類型)的單一貼文。 $is_robots
:檢查是否是對 robots.txt
檔案的查詢。 $is_posts_page
:檢查是否為「貼文頁面」(在管理面板的「閱讀設定」頁面上設定)。 $is_paged
:檢查是否是分頁查詢且不是首頁。 現在我們已經完成了屬性,讓我們繼續討論 WP_Query
類別的方法(函數)。
init()
此方法只是初始化對象,將所有屬性設為 NULL
、0
或 FALSE
。
parse_query( $query )
此方法使用$query
屬性來解析查詢並填入所有其他屬性(除了$posts
、$post_count
、$post
和$current_post
)。
parse_query_vars()
此方法重新解析查詢變數。
get( $query_var )
此方法取得給定的查詢變數。
設定( $query_var, $value )
此方法將給定的查詢變數設定為特定值。
&get_posts()
此方法傳回查詢要求的貼文並填入 $posts
和 $post_count
屬性。
next_post()
此方法增加 $current_post
索引並前進到 $posts
中的下一篇文章,傳回目前的文章物件。 (此方法必須在循環內使用才能正常工作。)
the_post()
此方法使用下一篇文章的資料設定全域 $post
變數。 (此方法必須在循環內使用才能正常工作。)
have_posts()
此方法檢查是否還有任何帖子需要處理,如果沒有,則返回 FALSE
。 (此方法必須在循環之前使用才能正常工作。)
rewind_posts()
此方法只是重設 $current_post
和 $post
屬性。
&query( $query )
此方法呼叫它的兩個同級方法:parse_query()
和 get_posts()
,並傳回 get_posts()
的結果。
get_queried_object()
該方法傳回查詢的物件。 (如果尚未設置,則設定 $queried_object
。)
get_queried_object_id()
此方法與上面的方法類似,傳回查詢物件的 ID ($queried_object_id
)。
快速提示:如果方法之前有一個 & 符號,則表示方法透過引用傳回。
我希望我能夠讓您清楚「屬性」和「方法」對於類別的含義。如果您理解 WP_Query
類別的屬性和方法的用途,我可以說我做得很好!
您對這篇文章有什麼要補充的嗎?在下面的評論部分與我們分享您的想法。如果您喜歡這篇文章,請不要忘記與您的朋友分享。
本系列下一部分見!
以上是釋放 WP_Query 的力量:探索屬性與方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!