WordPress 函数do_action()和add_action()详解和应用举例

do_action函数在wordpress的开发中使用非常广泛,wordpress官方也提供了非常多的动作钩子供开发者使用,所以了解并学会使用do_action可以让你在主题开发的过程中做到事半功倍的效果,下面就一起学习一下。

do_action函数声明(定义)作用

do_action函数是WordPress的内部函数,作用是创建一个行为钩子,它没有返回值,单纯的就是在特定的地方执行插件或者主题开发者挂载的函数,一般存在于某个特殊的节点或者事件上(比如开始加载主题模板的时候或者发布一篇文章的时候),该函数让wordpress变得更加强大,扩展性更加好/

do_action($tag, $arg);

do_action参数

这个函数可以包含两个或者多个变量,但是第一个$tag变量(动作钩子)是必须的,而且这个函数不会返回值。

  • $tag(字符串)(必须)要执行的动作的名字。
  • $arg(混合)(可选)额外的参数,会被传到调用的函数里,可以添加无限个,比如保存文章的时候触发 save_post 动作,就可以把保存的文章的 id 穿进去,让回调函数根据文章 id 进行操作。

do_action()函数应用示例

/**
 * 创建一个welcome函数,内容为输出一段话,然后通过add_action创建一个挂钩
 */
function welcome(){
    echo '欢迎访问:小菜的IT网(https://www.xiaocaiit.cn)';
}
add_action('kuzhuti_top_welcome','welcome');
然后在任何地方可以通过do_action调用
/**
 * 通过do_action执行kuzhuti_top_welcome动作
 */
do_action('kuzhuti_top_welcome')
执行效果:
就相当于直接执行
echo '欢迎访问:小菜的IT网(https://www.xiaocaiit.cn)';
这个示例比较简单,没有添加任何参数,如果能够理解的话,我们可以尝试添加一些参数,使其使用起来更加的方便,例如:
/**
 * 创建一个welcome函数
 * @param $name 名称
 * @param $tiem 时间
 */
function welcome($name,$time){
    echo $name.'你好,欢迎访问小菜的IT网,现在的时间是:'.date('Y-m-d h:i:s',$time);
}
add_action('kuzhuti_top_welcome','welcome',10, 2);
此时我们定义的动作钩子kuzhuti_top_welcome添加了两个参数,分别是$name$time,所以我们在使用do_action()的时候需要添加对应的参数。
<?= do_action('kuzhuti_top_welcome','浅唱',time())?>
执行一下:

一句话理解do_action()函数就是:执行挂载到钩子上的动作(回调函数实现的)。

上面的示例代码理解之后,肯定会有一个疑问,明明可以使用function定义一个函数就可以完成的事情,为什么要使用do_action这么麻烦呢。其实不然,从上面可以得知do_action一般是搭配add_action来使用的,我们要透彻掌握do_action就需要了解add_action

add_action()函数

add_action是WordPress核心在执行过程中的特定点或特定事件发生时启动的钩子。

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

add_action参数

  • $tag (字符串)(必须)要执行的动作的名字。
  • $function_to_add(回调函数)(必须)您希望被调用的函数的名称。
  • $priority(数字)(可选)用于指定与特定操作相关联的函数的执行顺序。较低的数字对应较早的执行,具有相同优先级的函数按照它们添加到动作中的顺序执行,默认值:10。
  • $accepted_args(数字)(可选)函数接受的参数个数,默认值:1。

总结

add_action的参数中我们就可以得知,add_action对于同一动作可以多次添加不同的回调函数,并且设置不同的执行先后顺序,由此可见,在一些特殊的节点或者事件上,例如发布文章的流程中(wordpress已提供官方的该动作挂钩,此处仅为示例),添加一个do_action动作,就可以在其他主题或插件中通过add_action函数对原有的发布功能就进行拓展并实现更多的功能。

本文由:小天丶 发布于 小菜的IT网,转载请注明出处:https://www.xiaocaiit.cn/498.html

相关推荐

评论此文章

已有0人参与了评论