首页/wordpress/WordPress-Hooks机制之do_action与add_action用法

WordPress-Hooks机制之do_action与add_action用法

WordPress中,有很多常用的Hooks,翻译为中文为钩子、或钩住的意思,当然钩子有很多种,最常用的无非两种,第一种是动作钩子,例如add_action,这种钩子没有返回值,第二种就是过滤钩子,add_filter,这种钩子,有返回值,本篇教程主要讲解的是第一种钩子,即do_action与add_action。

原型:do_action( string $tag, $arg = '' )

参数如下:
  • $tag:string,要执行的动作名称
  • $arg:mixed,额外的参数传递到与该操作关联的函数,一般传递变量、数组、对象,默认空,即不传递

一、do_action用法


<?php 
	do_action('bbq',array('username'=>'hellokitty'));//传递一个数组
	do_action('bbq',array('username'=>'hellokitty'),array('password'=>'google'));//传递2个数组
?>

<?php 
	do_action('bbq',$post);//传递$post对象
	do_action('bbq',array($post));//传递$post对象,两种方式都可以
?>
这里只列举了,数组以及对象的用法及传递,至于简单变量就不举例了 实际上,do_action,简单的可以认为,它只是注册了一个动作,或者说是注册了一个断点,当程序执行到这个断点的时候,通过add_action,把这个断点与所需执行的函数进行结合,注意不能有返回值 至于do_action放在哪里呢?非常简单,放在你WordPress主题文件内的任何模板文件(除了,style.css、functions.php、screenhot.png)

二、add_action用法-把注册的动作与所需执行的函数进行结合


add_action('bbq','ThemeHello_Output_bbq',10,1);
function ThemeHello_Output_bbq($array1){
	echo "<pre>";
	print_r($array1);
	echo "</pre>";
} //这段代码片段,放置于当前主题的functions.php文件内,你就可以看到你所传递数组的信息了。

add_action('bbq','ThemeHello_Output_bbq',10,2);
function ThemeHello_Output_bbq($array1,$array2){
	echo "<pre>";
	print_r($array1);
	print_r($array2);
	echo "</pre>";
}//这段代码片段,放置于当前主题的functions.php文件内,注意这里是传递两个数组,你应该注意add_action参数的变化。

add_action('bbq','ThemeHello_Output_bbq',10,1);
function ThemeHello_Output_bbq($post){
	print_r($post);
}//这段代码片段,放置于当前主题的functions.php文件内,注意这里是接收了$post对象。

三、add_action()的原型及参数

  • 原型:add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
  • 用法:为指定动作钩住所需执行的函数
  • $tag – 你的函数要执行的动作名称
  • $function – 要调用的函数名
  • $priority – 一个表示动作调用顺序的整数,默认是10。数字越小,这个函数越早被调用,因为你可能要在同一个钩子上挂载好几个动作
  • $accepted_args – 动作钩子要传递给你的函数的参数数量,默认只有一个参数

总结:

懂了HOOKS的概念是理解wordpess核心机制的基础,本文也只是介绍了动作钩子,如果你想了解其根本原理的话,那么必须读wordpress源码,do_action与add_action的源码位于wordpress的wp-includes/plugin.php文件内
收藏:

相关资讯