当挂接任何已由先例触发的挂接时,都会遇到此问题do_action
(即何时this_hook
已经在do_action
在wordpress的核心文件或任何插件文件中)
在这种情况下,在add_action(\'this_hook\',\'function\', $priority, $nb_arguments)
可能会产生尽可能多的后果,发出这个警告,以及其他副作用,如重复提到的。
让我们来解释一下this_hook
已触发两次,如下所示:
核心或插件文件中:do_action( \'this_hook\' );
开发人员在模板页面文件中:do_action( \'this_hook\', \'dogs\', \'cats\');
因此,如果在将参数传递给add_action
, 您应该验证它是否在代码中的其他位置使用(使用不同数量的参数)。当然,由于您不想修改核心o插件文件来添加表示缺少的两个参数,一种解决方案是触发add_action
在模板中的另一个本地化挂钩上。
让我们假设文件头中还有其他本地化的挂钩。php,比如do_action( \'before_header\')
还有一个do_action(\'after_header\')
然后在functions.php
:
function trigger_function () {
add_action( \'this_hook\', \'my_function\', 10, 2);
}
add_action( \'before_header\', \'trigger_function\');
function remove_function () {
remove_action( \'this_hook\', \'my_function\');
}
add_action( \'after_header\', \'remove_function\');
在中
header.php
, 你应该有这样的东西:
do_action(\'before_header\');
....
do_action(\'this_hook\', \'dogs\', \'cats\');
....
do_action(\'after_header\');