問題描述

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