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函数对原有的发布功能就进行拓展并实现更多的功能。
/** * 创建一个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函数对原有的发布功能就进行拓展并实现更多的功能。