問題描述

我正在嘗試瞭解 WordPress 中的一些功能,但是我不知道 apply_filters(…)實際上在做什麼。

有幾個例子,有人能夠為我清除這個問題嗎?

最佳解決方案

apply_filters($tag, $value)將’value’ 引數傳遞給’hooked'(使用 add_filter) 到指定的過濾器’tag’ 中。每個函式對該值執行一些處理,並返回一個修改後的值,以傳遞給序列中的下一個函式。

例如,預設情況下 (在 Wordpress 2.9 中),the_content 過濾器透過以下函式序列傳遞值:

  • wptexturize

  • convert_smilies

  • convert_chars

  • wpautop

  • shortcode_unautop

  • prepend_attachment

  • do_shortcode

次佳解決方案

遲到的答案

簡短解釋

apply_filters()global $wp_filters 陣列相互作用。基本上,它只是檢查陣列,如果當前的過濾器 (或鉤子) 有一個動作 (/回撥函式) 附加,然後呼叫它。

很長的解釋

當您將回撥/操作附加到過濾器或鉤子時,您只需將回撥名稱新增到全域性過濾器陣列。當時,在程式碼 (例如模板,核心或外掛檔案) 中,發生對 do_action()apply_filters()的呼叫,然後 WordPress 透過陣列搜尋並呼叫回撥。過濾器比鉤子更特別的是它返回值 (進一步處理),而不僅僅是觸發回撥。所以總結一下:Hooks 要插入資料,而 filter 是要修改資料。

第三種解決方案

這是我正在讀書,考慮最流行的答案和額外的資源:

  • $標籤似乎是鉤子名稱的同義詞。 (對我來說並不是特別直觀。)

  • the_content 是”filter” 型別的掛鉤的示例。

  • the_content 掛鉤由多個過濾器組成。

  • 過濾器修改資料。他們基本上過濾資料庫,在使用者檢視資料之前更改資料。

  • 例如, apply_filters() 的常見用途是將 the_content 過濾器應用於 $ content 。在這種情況下,雙重返回將轉換為<p> 標籤,笑臉將轉換為圖示等。

  • “the_content” 是一個鉤子,而”the_content()” 是一個功能。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。