添加操作(_A)(一串 $挂钩名称,可调用的 $回调,整数 $优先级 = 10,整数 $接受_参数 = 1 ):真的

将回调函数添加到动作挂钩。

描述

动作是WordPress核心在执行期间或发生特定事件时在特定点启动的挂钩。插件可以使用ActionAPI指定在这些点执行一个或多个PHP函数。

参数

$挂钩名称一串必修的
要添加回调的操作的名称。
$回调可调用的必修的
调用操作时要运行的回调。
$优先级整数可选择的
用于指定与特定操作关联的函数的执行顺序。
较小的数字对应于较早的执行,具有相同优先级的函数将按添加到操作中的顺序执行。

违约:10

$接受_参数整数可选择的
函数接受的参数数。

违约:1

返回

真的始终返回true。

更多信息

用法

add_action($hook、$function_to_add、$priority、$accepted_args);

要找出操作的参数数量和名称,只需在代码库中搜索匹配的do_action()呼叫。例如,如果您正在挂接“save_post”,则会在post.php中找到它:

do_action('save_post',$post_ID,$post,$update);

您的add_action调用如下所示:

add_action(“保存_发布”,“wpdocs_my_save_post”,10,3);

您的功能是:

函数wpdocs_my_save_post($post_ID,$post,$update){//在这里做事}

来源

函数add_action($hook_name,$callback,$priority=10,$accepted_args=1){return add_filter($hook_name,$callback,$priority,$accepted_args);}

变更日志

版本描述
1.2.0介绍。

用户贡献的笔记

  1. 跳到注释11内容

    与类一起使用
    要使用添加操作()当使用类构建插件或主题时,需要使用数组可调用语法。您可以将函数传递给添加操作()作为数组,使用$这个作为第一个元素,然后是类方法的名称,如下所示:

    /***类别WP_Docs_Class。*/类WP_Docs_class{/***施工单位*/公共函数__construct(){add_action(“save_post”,数组($this,“wpdocs_save_posts”);}/***处理保存过帐数据。*/公共函数wpdocs_save_posts(){//在这里做事。。。}}$wpdocsclass=新WP_Docs_Class();
  2. 跳到注释12内容

    与类中的静态函数一起使用
    如果类是静态调用的,则方法必须如下所示$这个不可用。如果类被扩展,这也适用。使用以下内容:

    /***类别WP_Docs_Static_Class。*/类WP_Docs_Static_class{/***用于设置操作处理程序的初始化程序*/公共静态函数init(){add_action('save_post',数组(get_called_class(),'wpdocs_save_posts'));}/***用于保存过帐数据的处理程序。*/公共静态函数wpdocs_save_posts(){//在这里做事。。。}}WP_Docs_Static_Class::init();
  3. 跳到注释13内容

    简单挂钩
    要在博客上发布条目时向朋友发送电子邮件,请执行以下操作:

    /***给我的朋友发电子邮件。**@param int$post_id帖子id。*@return int帖子ID。*/函数wpdocs_email_friends($post_id){$friends='bob@example.org,susie@example.org';wp_mail($friends,“sally的博客更新了”,'我刚刚在我的博客上放了一些东西:http://blog.example.com' );返回$post_id;}add_action('publish_post','wpdocs_email_friends');
  4. 跳到注释14内容

    要将变量传递给操作的被调用函数,可以在原始编码的do_action中没有参数时使用闭包(自PHP 5.3+以来)。例如:

    add_action('wp_footer',函数($arguments)use($myvar){echo$myvar;回声$myvar;},$priority_integer,$accepted_arguments_integers);
  5. 跳到备注16内容

    在类中使用时传递参数
    要在使用add_action调用类时将参数传递给类中的方法,可以执行以下操作:

    公共函数__construct(){//行动add_action('init',数组($this,'call_somefunction'));}/***使用参数调用add_action的中间函数*/公共函数call_somefunction(){$this->somefunction(“Hello World”);}/***做某事的实际功能*/公共函数somefunction($text){echo$text;}
  6. 跳到注释17内容

    如何添加从实例化类调用函数(带参数)的操作:

    $admin_menu_hider=新AdminMenuHider(用户管理::get_internal_users());添加操作(_A)('wp_before_admin_bar_render',函数()use($admin_menu_hider){$admin_menu_hider->change_greeting_message(“你好”);});
  7. 跳到注释18内容

    我强烈建议您不要将钩子回调附加到类的构造函数中。

    而不是实施官方的这个线程中投票最多的例子,选择解耦的解决方案。您还有一行代码要编写,但对象变得更加可重用,不太容易出错(考虑一下,如果调用新WP_Docs_Class()在代码中重复两次,以Codex为例)。

    /***类别WP_Docs_Class。*/类WP_Docs_class{/***在一个单独的方法中初始化所有钩子的回调。*/公共函数挂钩(){add_action(“save_post”,数组($this,“wpdocs_save_posts”);}/***处理保存过帐数据。*/公共函数wpdocs_save_posts(){//在这里做事。。。}}$wpdocsclass=新WP_Docs_Class();$wpdocsclass->hooks();
  8. 跳到注释19内容

    接受的参数
    如果设置了传递参数,则挂钩函数可以选择接受来自操作调用的参数。在这个简单的示例中回声注释id函数采用$注释id参数,当do_action()使用调用注释_未找到过滤器挂钩运行。

    /***未找到注释时发出警告**@param int$comment_id注释id。*/函数echo_comment_id($comment_id){printf('找不到注释ID%s',esc_html($Comment_ID));}add_action('comment_id_not_found','echo_comment_id',10,1);
  9. 跳到注释20内容

    为了防止由于简单的输入错误(防御性编程)导致的运行时错误,并防止全局命名空间的污染,请使用闭包而不是函数名。调整的样本代码:

    /***添加保存挂接*/add_action('save_post',函数($post_ID,$post,$update){//在这里做事}, 10, 3 );

你必须登录在能够发表注释或反馈之前。