do_操作(一串 $挂钩名称,混合的 $参数 )

调用已添加到动作挂钩的回调函数。

说明

此函数调用附加到动作挂钩的所有函数$hook_name($hook_name).
只需调用此函数,使用$挂钩名称参数。

您可以向钩子传递额外的参数,就像使用应用过滤器().

示例用法:

//动作回调函数。函数示例回调($arg1、$arg2){//(也许)用参数做点什么。}add_action('示例_action','示例回调',10,2);/**通过调用“example_callback()”函数触发操作*这与上面的exampleaction有关。**-“example_action”是操作挂钩。*-$arg1和$arg2是传递给回调的附加参数。do_action(“示例_action”,$arg1,$arg2);

参数

$挂钩名称一串必修的
要执行的操作的名称。
$参数混合的可选择的
传递给与操作挂钩的函数的附加参数。默认为空。

来源

函数do_action($hook_name,…$arg){全局$wp_filter、$wp_actions、$wp当前过滤器;if(!isset($wp_actions[$hook_name])){$wp_actions[$hook_name]=1;}其他{++$wp_actions[$hook_name];}//首先执行“所有”操作。if(isset($wp_filter['all']){$wp_current_filter[]=$hook_name;$all_args=func_get_args();//phpcs:忽略PHPCompatibility。功能使用。参数函数ReportCurrentValue。需要检查_wp_call_all_hook($all_args);}if(!isset($wp_filter[$hook_name])){if(isset($wp_filter['all']){array_pop($wp_current_filter);}回报;}if(!isset($wp_filter['all']){$wp_current_filter[]=$hook_name;}if(空($arg)){$arg[]=“”;}elseif(is_array($arg[0])&&1===计数($arg[0])&&isset($arg:0][0])&is_object($arg[0][0)){//PHP4风格的“array(&$this)”作为操作“$arg”传递的向后兼容性。$arg[0]=$arg[0][0];}$wp_filter[$hook_name]->do_action($arg);array_pop($wp_current_filter);}

变更日志

版本说明
5.3.0将现有的和已记录的…$参数参数,将其添加到函数签名。
1.2.0介绍。

用户贡献的笔记

  1. 跳到注释4内容

    示例

    #=====(mu-)插件、主题或核心中的某个位置#/***你可以有任意多的参数,*但是回调函数和addaction调用需要在参数数量上达成一致。*注意:上面的“add_action”有2,“i_am_hook”接受2。*你会在很多主题和插件以及许多位置@core中找到这样的动作挂钩*@参见:https://codex.wordpress.org/Plugin_API/Action_Reference网站*/#=====例如,在functions.php文件中#/***定义回调函数*在这个函数中,你可以做任何你能想象的事情*使用上面doaction()调用中加载的变量。*/函数wpdocs_who_is_hook($a,$b){echo“<代码>”;打印_($a);//`print_r `第一个参数内的数组数据echo“</code>”;echo“<br/>”$b、 //年echo linebreak和第二个参数的值}//然后将其添加到操作挂钩中,匹配doaction中定义的参数数量(2)//参见[https://codex.wordpress.org/Function_Reference/add_action(https://codex.wordpress.org/Function_Reference/add_action)]在Codex中//add_action($tag、$function_to_add、$priority、$accepted_args);add_action('wpdocs_i_am_hook','wpdecs_who_is_hook`,10,2);//定义动作挂钩的参数$a=数组(“眼罩”=>“是”,“鹦鹉学舌”=>正确,“木腿”=>1);$b=__('胡克说:“我和彼得·潘一起吃了冰淇淋。”','textdomain');//执行名为“i_am_hook”的操作挂钩do_action('wpdocs_i_am_hook',$a,$b);

    结果:

    阵列(['eye patch']=&gt;'是的'['parrot']=&gt;真的[‘木腿’]=&gt;1)胡克说:“我和彼得·潘一起吃了冰淇淋。”
  2. 跳到备注5内容

    大GOTCHA:

    打电话时do_操作,如果$参数传入的是一个包含单个对象的数组,它将传入该obejct,而不是数组。但是,如果数组的单个项不是数组,则它不会执行相同的开关操作

    例如。,

    函数my_callback($should_be_an_array){var_dump($should_be_an_array);}add_action('my_action','my_callback');do_action('my_action',数组(new stdclass()));do_action('my_action',数组('array_item_thats_not_an_object'));

    发出回声

    对象(stdClass)[420]数组(大小=1)0=>字符串“array_item_thats_not_an_object”(长度=30)

    注意,第一次传入数组时标准类但回调函数只接收标准类,不是数组

  3. 跳到注释6内容

你必须登录在能够贡献笔记或反馈之前。