問題描述

我有一個主題,包括一些設定,使用 after_setup_theme,但我想編寫我自己的功能,也需要執行 after_setup_theme 。我寧願將我的東西儲存在一個單獨的檔案中。可以多次呼叫 after_setup_theme 嗎?

最佳解決方案

WordPress 鉤子像好萊塢一樣工作:你不叫他們,他們呼叫你。但不像好萊塢,他們不斷呼籲名單上的所有人。

動作或過濾器將多個功能掛鉤,不同的外掛,甚至是不同的 functions in the WordPress core that all do something specific,這是正常現象。不僅可能,甚至是良好的做法,因為這意味著你的程式碼變得更清晰 (每個功能只有一件事情),並且透過解除它來容易地停用一個特定的功能。

請記住,您還可以使用掛鉤的優先順序:如果要在 after_setup_theme 中執行 functionA() 和 functionB(),但是 functionA() 必須在 functionB() 之前執行,則可以使用預設優先順序掛起 functionA() 10 和優先順序為 20 的 functionB()(或 10 以上的任何其他數字) 。在該動作正在執行時,將動作的另一個功能掛起來是不行的。所以你不能將 functionB() 從函式 A() 呼叫 after_setup_theme,在 after_setup_theme 上呼叫。你可以直接呼叫它,但是你會失去單獨的鉤子的好處。

次佳解決方案

是的,您可以根據需要新增儘可能多的操作。去嘗試一下。

第三種解決方案

我的建議是有一個”master” 函式,如果你願意的話,呼叫所有其他功能。這樣一來,你只需要一次鉤住這個動作。

add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
    func_a();
    func_b();
    func_c();
    func_d();
    func_e();
}
function func_a(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}

這樣做的另外一個好處是能夠返回可以在隨後的函式呼叫中使用的值。

參考文獻

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