問題描述
我正在嘗試瞭解 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。