問題描述

我從來沒有見過像 do_action('something_10')這樣的標籤。如果我使用數字是無效的嗎?

如果方法有效,那麼我如何有條件地在標籤字符串中寫入不同的數字?例如,以下代碼是否正確 ($ grade 是數字)?

do_action("new_grade_$grade")

最佳解決方案

  1. 當您將”hook” /add_action/*_filter('whatever'); 的一個回調函數傳遞給 do_action('whatever'); 時,您基本上將功能 (或 object-method) 名稱添加到 global $wp_filters -array 。

  2. 這樣做,您將函數/方法名稱添加到如下構建的數組中

    $wp_filter[ $tag ][ $priority ][ $idx ]
    // $tag = action/filter name
    // $priority = 3rd argument / execution order
    // $idx = "unique" name
    
  3. 不是第三個參數/$idx 是使用_wp_filter_build_unique_id()函數構建的,它是 add_action/*_filter()中的第一個參數。

  4. 在這個函數內,每個函數名保持不變,只有方法名變化。這就是為什麼你經常會找到”funky” 方法名稱,前綴有一個很長的數字。

Can I add numbers after letters in do_action tag?

所以是的,數字在命名動作掛鈎時是完全有效的。總結一下,使用 a-zA-Z0-9_作為函數/方法/變量名稱。不支持-。而某些字符在系統上可能會很好地工作,它主要取決於編碼,如果您選擇的函數名稱 (例如:_wUT?a_nice_DÄY!()) 有效。 WordPress 本身不檢查函數/var /hook /filter /任何名稱是否有效。


另外 @BrianFegter 回答關於”contextual hooks” 。

您可以在 (MU 或單) 安裝中使用 this plugin 1) 的 (任何) 屏幕中查看» 幫助 «-panel,看到一些”contextual hooks” 。

1) 插件靈感來自 @StephenHarris 的文章。

次佳解決方案

是的,您可以動態創建自己的動作鈎子。 WordPress 有幾個動態掛鈎,如 admin_head-hooknameadmin_footer-hooknamenew_grade_$n 是一個有效的掛鈎名稱。

參考文獻

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