问题描述
我从来没有见过像 do_action('something_10')
这样的标签。如果我使用数字是无效的吗?
如果方法有效,那么我如何有条件地在标签字符串中写入不同的数字?例如,以下代码是否正确 ($ grade 是数字)?
do_action("new_grade_$grade")
最佳解决方案
-
当您将”hook” /
add_action/*_filter('whatever');
的一个回调函数传递给do_action('whatever');
时,您基本上将功能 (或 object-method) 名称添加到global $wp_filters
-array 。 -
这样做,您将函数/方法名称添加到如下构建的数组中
$wp_filter[ $tag ][ $priority ][ $idx ] // $tag = action/filter name // $priority = 3rd argument / execution order // $idx = "unique" name
-
不是第三个参数/
$idx
是使用_wp_filter_build_unique_id()
函数构建的,它是add_action/*_filter()
中的第一个参数。 -
在这个函数内,每个函数名保持不变,只有方法名变化。这就是为什么你经常会找到”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-hookname
和 admin_footer-hookname
。 new_grade_$n
是一个有效的挂钩名称。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。