釋放 WP_Query 的力量:探索屬性和方法

釋放 WP_Query 的力量:探索屬性和方法

歡迎來(lái)到“掌握 WP_Query”系列的另一部分。到目前為止我們做得怎么樣?我希望您喜歡這些教程,就像我們喜歡編寫(xiě)它們一樣。

在本教程中,您將了解 WP_Query 類的屬性和方法。但首先,我認(rèn)為討論一下類中的“屬性”和“方法”是合適的。

我們可以嗎?

屬性和方法到底是什么?

在 PHP 中,有一種更簡(jiǎn)潔的方式編寫(xiě)代碼:面向?qū)ο?/b>編程,或 OOP。對(duì)于 OOP,我們使用“類”作為藍(lán)圖 — 我從 Code Tuts+ 的一篇經(jīng)典帖子中獲取了這個(gè)術(shù)語(yǔ),Jason Lengstorf 的“面向?qū)ο蟮?PHP 初學(xué)者”:

例如,類就像房子的藍(lán)圖。它在紙上定義了房子的形狀,清楚地定義和規(guī)劃了房子不同部分之間的關(guān)??系,即使房子并不存在。

(請(qǐng)記住 WP_Query 是 WordPress 核心的重要類。)

當(dāng)您理解 PHP 類的概念時(shí),“屬性”和“方法”就會(huì)變得非常容易理解,因?yàn)檫@些詞只是“變量”和“函數(shù)”的同義詞。是的,屬性是 PHP 類的變量,方法是 PHP 類的函數(shù)。

現(xiàn)在我們已經(jīng)介紹了它們是什么,讓我們來(lái)了解每個(gè)屬性和方法。

警告:直接更改屬性是不明智的。正如 Codex 所說(shuō),您應(yīng)該使用 WP_Query 的方法與它們交互。

WP_Query 類的屬性

讓我們從 WP_Query 類的屬性或變量開(kāi)始。

查詢字符串:$query

此屬性存儲(chǔ)傳遞給 $wp_query 對(duì)象的查詢。

查詢變量數(shù)組:$query_vars

此屬性存儲(chǔ) $query 的變量(及其值)的關(guān)聯(lián)數(shù)組。

查詢對(duì)象:$queried_object

該屬性存儲(chǔ)當(dāng)前查詢的對(duì)象,如 $post 對(duì)象(如果是 post 查詢)或 $author 對(duì)象(如果是作者查詢)。

查詢對(duì)象的ID:$queried_object_id

該屬性存儲(chǔ)查詢對(duì)象的ID。

查詢返回的帖子:$posts

此屬性存儲(chǔ)從查詢返回的帖子。

顯示的帖子數(shù)量:$post_count

此屬性存儲(chǔ)當(dāng)前查詢的帖子數(shù)。

查詢返回的帖子數(shù):$found_posts

此屬性存儲(chǔ) SQL 查詢中不包含 LIMIT 子句的帖子數(shù)量。

頁(yè)數(shù):$max_num_pages

此屬性存儲(chǔ)頁(yè)數(shù) – 計(jì)算方法是將 $found_posts 除以 $posts_per_page。

當(dāng)前帖子的索引:$current_post

該屬性存儲(chǔ)循環(huán)中當(dāng)前項(xiàng)的索引號(hào)。例如,如果循環(huán)剛剛開(kāi)始,則為 -1,并且通過(guò) next_post() 方法遞增。

當(dāng)前帖子:$post

這個(gè)屬性存儲(chǔ)當(dāng)前的帖子。

條件標(biāo)簽布爾值:$is_{conditional}

以下屬性存儲(chǔ)為布爾值,提供有關(guān)當(dāng)前帖子狀態(tài)的信息:

  • $is_single:檢查是否是任何帖子類型(“附件”和“頁(yè)面”帖子類型除外)的單個(gè)帖子。
  • $is_page: 檢查它是否是一個(gè)頁(yè)面。
  • $is_archive: 檢查是否為存檔頁(yè)面。
  • $is_preview:檢查是否是帖子預(yù)覽。
  • $is_date:檢查是否是基于日期的存檔頁(yè)面。
  • $is_year:檢查是否是基于年份的存檔頁(yè)面。
  • $is_month:檢查是否是基于月份的存檔頁(yè)面。
  • $is_time:檢查是否是基于時(shí)間(每小時(shí)、每分鐘或每秒)的存檔頁(yè)面。
  • $is_author:檢查是否是作者的存檔頁(yè)面。
  • $is_category: 檢查是否是類別存檔頁(yè)面。
  • $is_tag:檢查是否是標(biāo)簽存檔頁(yè)面。
  • $is_tax:檢查是否是分類存檔頁(yè)面。
  • $is_search:檢查是否是“搜索結(jié)果”頁(yè)面。
  • $is_feed:檢查是否是 feed。
  • $is_comment_feed:檢查是否是評(píng)論提要。
  • $is_trackback:檢查是否是引用。
  • $is_home:檢查是否是博客主頁(yè)面。
  • $is_404:檢查是否是404錯(cuò)誤頁(yè)面。
  • $is_comments_popup: 檢查是否是評(píng)論彈出窗口。
  • $is_admin: 檢查是否是管理面板。
  • $is_attachment: 檢查是否是附件。
  • $is_singular:檢查是否是任何帖子類型(包括“附件”和“頁(yè)面”帖子類型)的單個(gè)帖子。
  • $is_robots:檢查是否是對(duì) robots.txt 文件的查詢。
  • $is_posts_page:檢查是否是“帖子頁(yè)面”(在管理面板的“閱讀設(shè)置”頁(yè)面上設(shè)置)。
  • $is_paged:檢查是否是分頁(yè)查詢且不是首頁(yè)。

WP_Query 類的方法

現(xiàn)在我們已經(jīng)完成了屬性,讓我們繼續(xù)討論 WP_Query 類的方法(函數(shù))。

init()

此方法只是初始化對(duì)象,將所有屬性設(shè)置為 NULL、0 或 FALSE。

parse_query( $query )

此方法使用 $query 屬性來(lái)解析查詢并填充所有其他屬性(除了 $posts、$post_count、$post 和 $current_post)。

parse_query_vars()

此方法重新解析查詢變量。

get( $query_var )

此方法獲取給定的查詢變量。

設(shè)置( $query_var, $value )

此方法將給定的查詢變量設(shè)置為特定值。

&get_posts()

此方法返回查詢請(qǐng)求的帖子并填充 $posts 和 $post_count 屬性。

next_post()

此方法增加 $current_post 索引并前進(jìn)到 $posts 中的下一篇文章,返回當(dāng)前的文章對(duì)象。 (此方法必須在循環(huán)內(nèi)使用才能正常工作。)

the_post()

此方法使用下一篇文章的數(shù)據(jù)設(shè)置全局 $post 變量。 (此方法必須在循環(huán)內(nèi)使用才能正常工作。)

have_posts()

此方法檢查是否還有任何帖子需要處理,如果沒(méi)有,則返回 FALSE。 (此方法必須在循環(huán)之前使用才能正常工作。)

rewind_posts()

此方法只是重置 $current_post 和 $post 屬性。

&query( $query )

該方法調(diào)用它的兩個(gè)同級(jí)方法:parse_query() 和 get_posts(),并返回 get_posts() 的結(jié)果。

get_queried_object()

該方法返回查詢的對(duì)象。 (如果尚未設(shè)置,則設(shè)置 $queried_object。)

get_queried_object_id()

此方法與上面的方法類似,返回查詢對(duì)象的 ID ($queried_object_id)。

快速提示:如果方法之前有一個(gè) & 符號(hào),則表示該方法通過(guò)引用返回。

今天總結(jié)

我希望我能夠讓您清楚“屬性”和“方法”對(duì)于類的含義。如果您理解 WP_Query 類的屬性和方法的用途,我可以說(shuō)我做得不錯(cuò)!

您對(duì)這篇文章有什么要補(bǔ)充的嗎?在下面的評(píng)論部分與我們分享您的想法。如果您喜歡這篇文章,請(qǐng)不要忘記與您的朋友分享。

本系列下一部分見(jiàn)!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享