GG資源網

如何使 WP_Query 參數可過濾

WP_Query 類非常強大。 它允許您創建自己的自定義查詢,以便在您的 WordPress 網站的任何位置運行——在主要內容、側邊欄中或您喜歡的任何其他位置。

這是我經常使用的東西,無論是在自定義模板文件中還是在側邊欄或頁腳等內容之外的區域中。 而且我已經記不清我用多少次編寫自定義查詢了 WP_Query.

但是有可能避免所有的返工。 如果您使查詢參數可過濾,則可以編寫一個函數來修改參數並在站點的不同位置運行不同的查詢。 這意味著您可以編寫一個帶有一些默認參數(或者實際上根本沒有參數)的插件,然後在您的主題(或另一個插件)中編寫一個修改這些參數的函數。

這不會改變使用您的查詢參數運行的循環(儘管如果您願意,您也可以為此創建另一個過濾器),但這確實意味著您可以編寫您的 WP_Query 實例一次,然後在需要時對其進行調整。

在這篇文章中,我將向您展示如何編寫一個帶有可過濾實例的插件 WP_Query 然後在主題的函數文件中編寫一個函數來編輯參數。

繼續閱讀,或使用以下鏈接跳轉:

  • 你需要什麼
  • 編寫 WP_Query 插件
  • 添加可過濾參數
  • 在您的主題中使用過濾器
  • 過濾主題中的參數

你需要什麼

要繼續閱讀這篇文章,您需要訪問以下內容:

  • 運行您自己的主題或子主題的 WordPress 開發或測試安裝
  • 代碼編輯器

您還需要了解如何編寫插件、如何編輯函數文件以及如何 WP_Query 作品。

準備好? 那麼讓我們開始吧!

編寫 WP_Query 插件

首先創建你的插件。 在您的插件中為您的插件創建一個新文件夾 wp-內容/插件 文件夾,然後在其中創建一個空白文件。 我總是創建一個文件夾,以防以後想在我的插件中添加任何樣式、腳本或包含文件。

這是我的插件的開頭行:

現在讓我們添加 WP_Query 功能。 我將首先添加 $args 變數,但保持為空:

然後我們添加循環:

這是完整的功能:

我們現在有一個相當標準的查詢和循環。 這將根據參數(當前為空)運行查詢,然後輸出一個標題,後跟一個獲取的項目列表以及指向它們的鏈接。 它可用於輸出使用類別、分類法、帖子類型或其他任何內容作為參數的帖子列表。

但現在,它不會輸出任何東西,因為這些參數是空的。 讓我們添加一些參數,但將它們包裝在一個過濾器中。

添加可過濾參數

採取 $args 部分代碼並對其進行編輯以添加一些參數。

我只是要為 posts_per_page, 限制帖子輸出的數量。 我不會添加任何其他參數:這樣會輸出最近的五個帖子。 如果您願意,可以添加一些不同的參數。

到目前為止,如此簡單。 現在讓我們將這些參數包含在一個過濾器中。 這是代碼:

這將我們的單個參數包裝在一個名為 wpmu_filterable_query,然後您可以從另一個插件或您的主題中掛鉤,以修改這些參數。

當我們這樣做時,讓我們在循環內的該標題中添加一個過濾器,因為它有點通用。

編輯您的循環,使其包含一個過濾器:

就是這樣。 除非您決定在循環中添加更多過濾器,否則您的插件已準備就緒。

在您的主題中使用過濾器

下一步是在您的主題中編寫幾個函數。

第一個將調用 wpmu_filterable_query 動作鉤子並將其輸出到您的頁面中。 您可以通過多種方式之一調用它。

第一種是將它附加到主題中的動作鉤子上,方法是使用 add_action 功能。 所以如果你的主題有一個叫做 my_theme_sidebar_hook,您將在邊欄中輸出查詢,如下所示:

二是直接編碼成主題模板文件。 我更喜歡儘可能使用鉤子,因為它們給了我更多的靈活性,但如果你的主題沒有任何鉤子,這可能是最好的方法。 如果您正在使用第三方主題,請不要直接編輯主題文件 - 而是在子主題中創建它的副本。

然後在您的主題模板文件中,添加對 wpmu_filterable_query 功能:

這只是在您放置它的模板文件中的位置運行該函數。

第三個選項是創建一個新的模板文件,例如頁面模板文件,它將運行此查詢而不是默認查詢。 在這種情況下,您將複製 頁面.php 從您的主題或您的父主題,並用函數調用替換標準循環,如上。

這就是您將功能添加到主題的方式。 但是如何過濾這些論點呢?

過濾主題中的參數

最後一步是在主題的函數文件中編寫一個函數來過濾查詢參數。 您還可以添加第二個函數來過濾標題,以及使用您可能選擇添加到插件循環中的任何其他過濾器的任何函數。

請注意,如果需要,您可以使用插件來執行此操作,但是由於您已經將函數編碼到主題中,我認為將此代碼添加到函數文件中會更整潔。

假設您註冊了一個名為的帖子類型 玩偶,而您想輸出它。 但不是輸出六個帖子,而是顯示四個。

在您的函數文件中,您需要以下代碼:

這會將原始過濾器的內容替換為函數中的新內容。 請注意,如果您想保留原始過濾器中的任何參數,則必須將它們添加到此函數中,因為新代碼會覆蓋舊代碼,並且不會添加到它。

接下來讓我們添加一個函數來編輯標題文本:

這將輸出新函數的內容而不是 <h3>Heading</h3>,它在過濾器內部。

您可以根據需要修改這兩個功能。

使 WP_Query 可過濾使您的代碼更高效並節省時間

如果您要使用 WP_Query 在很多網站上上課,想省去編碼的麻煩 WP_Query 每次都完整,這可以為您節省一些工作。 在您使用的每個站點中 WP_Query,您只需要添加對函數的調用,以及附加到過濾器掛鉤的函數。

如果你想讓你的插件更加靈活,你可以在循環中使用一個包含文件,而不是直接將它編碼到插件中,然後將 include_once() 調用過濾器。 這樣,您可以根據需要調用不同的包含文件,並輸出不同版本的循環。

標籤:

由於網站搬家,部分鏈接失效,如無法下載,請聯繫站長!謝謝支持!
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » 如何使 WP_Query 參數可過濾

發表回復

CAPTCHAis initialing...