WordPress 函数do_action()详解和应用举例
do_action()函数: 我们经常能看到在一些WordPress函数中调用了do_action()函数,例如get_header(), get_footer()等调用模板的函数中经常调用do_action()函数。我们今天一起学习一下WordPress中do_action函数的作用。
1、do_action()函数声明(定义)作用
do_action()函数是WordPress的内部函数,作用是创建一个行为钩子,它没有返回值,单纯的就是在特定的地方执行插件或者主题开发者挂载的函数,一般存在于某个特殊的节点或者事件上(比如开始加载主题模板的时候或者发布一篇文章的时候),该函数让wordpress变得更加强大,扩展性更加好。例如wp_head()函数中只有一句代码就是:do_action(
‘wp_head’ ),他的意思就是执行挂载到wp_head这个动作钩子上的所有函数。
-
do_action($tag, $arg);
-
//$tag是必须的,为我们创建的动作名称;
-
//$arg 为我们要执行的"动作";
2、do_action()参数
这个函数可以包含两个或者多个变量,但是第一个$tag变量(动作钩子)是必须的,而且这个函数不会返回值。
$tag
(字符串)(必须)要执行的动作的名字。
$arg
(混合)(可选)额外的参数,会被传到调用的函数里,可以添加无限个,比如保存文章的时候触发 save_post
动作,就可以把保存的文章的 id 穿进去,让回调函数根据文章 id 进行操作。
3、do_action()函数应用示例
-
//先定义echo_meta,输出内容
-
function echo_meta(){
-
echo '<meta name="description" content="511遇见-不一样的遇见" />';
-
//然后将echo_meta挂载到wp_meta上
-
add_action('wp_meta','echo_meta');
-
}
-
//然后我们去执行wp_meta
-
function wp_meta() {
-
do_action('wp_meta');
-
}
我们再看一个例子:
-
//自定义回调函数zidingyihanshu(),该函数有两个参数
-
function zidingyihanshu( $canshu1, $canshu2 )
-
{
-
echo '<code>';
-
print_r( $canshu1 ); // 输出参数1
-
echo '</code>';
-
-
echo '<br />'.$canshu2; // 输出参数2
-
}
-
//把这个函数添加到woshigouzi这个钩子上,让他接受2个参数
-
add_action( 'woshigouzi', 'zidingyihanshu', 10, 2 );
-
-
// 为钩子定义参数值
-
$canshu1 = array(
-
'网站名称' => '511遇见网络:',
-
'这是真的吗?' => true,
-
'我多大了' => (int) 20 );
-
$canshu2 = '511遇见网络:"do_action函数应用实例"';
-
-
//执行挂载到woshigouzi上的函数
-
do_action( 'woshigouzi', $canshu1, $canshu2 );
下面我们再解释一下这个流程:
1. 我们先自定义了一个含有两个参数的回调函数;
2.紧着接我们通过add_action()这个函数把这个回调函数挂载到了woshigouzi这个动作钩子上,设置动作执行的优先级为10,并让这个回调函数可以接受两个参数;
3. 我们为这两个参数赋值;
4. 通过do_action()函数来执行挂在到woshigouzi这个动作钩子上面的函数,并把两个参数传给挂载到woshigouzi上面的回调函数;这个回调函数就会把这两个参数输出了;
一句话理解do_action()函数就是:执行挂载到钩子上的动作(回调函数实现的)。
正因为来之不易,所以才有了后来的倍加珍惜。