我有一個類似的問題,並通過亞當布朗的list of all WordPress filter hooks後,發現我需要的鉤子確實存在(widget_title
,因爲pxl提到),但沒有鉤子來獲取所有的部件輸出。我想我會詳細說明適用於我的解決方案。
理論上,widget_title
掛鉤應該會影響博客上的所有小部件,但我相信某些第三方小部件會忽略包含必要的代碼行來應用任何標題過濾器,因此它不是萬無一失的。它適用於我,然而,它可以用於將自定義「簡碼」(更準確地說,在這種情況下,'長碼')或語法應用於您的小部件標題。例如,我想偶爾在我的小部件標題中包含html代碼,但默認情況下,所有的html都被刪除。因此,爲了能夠加入像<em>
標籤的東西在我的一些標題的文本,我選擇了一個自定義的語法:的[[
代替<
& ]]
而不是>
(對前,[[em]]
和[[/em]]
),然後創建一個功能我的主題功能。PHP文件以處理該自定義的語法和與HTML等效替換:
function parse_html_widget_title($text) {
return str_replace(array('[[', ']]'), array('<', '>'), $text);
}
然後,我添加下方的行添加功能作爲過濾器:自動
add_filter('widget_title', 'parse_html_widget_title', 11); // 11 is one above the default priority of 10, meaning it will occur after any other default widget_title filters
的add_filter
/apply_filter
功能將被過濾的內容作爲第一個參數傳遞給指定爲過濾器的函數,這就是您所需要做的。
爲了對小部件的主要輸出做類似的事情,您需要查看所有小部件以查看它們使用的掛鉤並驗證它們是否具有主輸出的篩選器,而不是每個使用add_filter()
鉤您與您的自定義的回調函數找到(例如,它是搜索表單widget_text
的文本小組件輸出,或者get_search_form
[你可以看到它在WP-包括/一般的template.php,在get_search_form()
功能])。問題是,一些動態生成的小部件沒有鉤子(如Meta小部件),這就是爲什麼Jeff提供的輸出緩衝解決方案是最通用但不理想的解決方案。
我不知道他們什麼時候引入widget_text過濾器,也許他們沒有在' 09年當這個問題最初被問到。 在我的答案中查看我的示例代碼以獲取完整(且非常簡單)的工作示例。 – 2014-03-30 21:43:31