我对add_action
和do_action
的工作方式感到困惑,我在Wordpress的Function_Reference页面上做了一些研究,但仍然遇到问题让它发挥作用。 add_action
和do_action
位于服务器的不同页面上。
$ref = '12323123213';
add_action('add_ref','add_ref_function',10,1);
function add_ref_function ( $ref ) {
echo '<h2>Ref: ' . $ref . '</h2>';
}
do_action('add_ref');
答案 0 :(得分:1)
我知道这已经很老了,但也许我的解决方案会对某人有所帮助。
function print_ref(){
$ref = '12323123213';
return $ref;
}
add_action('add_ref','add_ref_function');
function add_ref_function() {
echo '<h2>Ref: '. print_ref() .'</h2>';
}
do_action('add_ref');
答案 1 :(得分:0)
add_action()
在您的情况add_ref_function
中获取函数的标识,并在任何人调用do_action()
时将其放入要调用的函数列表中。
它基本上将您的函数注册为回调。然后,稍后,只要WordPress的任何部分调用do_action('add_ref')
,只需一个参数即可以优先级10
调用您的函数。
这使您可以在代码中执行各种操作。例如,如果您使用do_action('init',myfunction,10,1)
,则可以在WordPress完成初始化其核心内的所有内容后立即调用您的函数。例如,这非常适合初始化插件或主题中的某些内容。
答案 2 :(得分:0)
do_action
使用add_action
调用与其关联的所有函数。在您的示例中,值$ ref不会被用作输入参数,除非您将其添加到do_action
调用中:
do_action( 'add_ref', $ref );