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