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这个动作钩子上的所有函数。

  1. do_action($tag, $arg);
  2. //$tag是必须的,为我们创建的动作名称;
  3. //$arg 为我们要执行的"动作";

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

(字符串)(必须)要执行的动作的名字。

$arg

(混合)(可选)额外的参数,会被传到调用的函数里,可以添加无限个,比如保存文章的时候触发 save_post 动作,就可以把保存的文章的 id 穿进去,让回调函数根据文章 id 进行操作。
3、do_action()函数应用示例

  1. //先定义echo_meta,输出内容
  2. function echo_meta(){
  3. echo '<meta name="description" content="511遇见-不一样的遇见" />';
  4. //然后将echo_meta挂载到wp_meta上
  5. add_action('wp_meta','echo_meta');
  6. }
  7. //然后我们去执行wp_meta
  8. function wp_meta() {
  9. do_action('wp_meta');
  10. }

我们再看一个例子:

  1. //自定义回调函数zidingyihanshu(),该函数有两个参数
  2. function zidingyihanshu( $canshu1, $canshu2 )
  3. {
  4.     echo '<code>';
  5.         print_r( $canshu1 ); // 输出参数1
  6.     echo '</code>';
  7.  
  8.     echo '<br />'.$canshu2; // 输出参数2
  9. }
  10. //把这个函数添加到woshigouzi这个钩子上,让他接受2个参数
  11. add_action( 'woshigouzi', 'zidingyihanshu', 10, 2 );
  12.  
  13. // 为钩子定义参数值
  14. $canshu1 = array(
  15.      '网站名称' => '511遇见网络:',
  16.      '这是真的吗?' => true,
  17.      '我多大了' => (int) 20 );
  18. $canshu2 = '511遇见网络:"do_action函数应用实例"';
  19.  
  20. //执行挂载到woshigouzi上的函数
  21. do_action( 'woshigouzi', $canshu1, $canshu2 );

下面我们再解释一下这个流程:

1. 我们先自定义了一个含有两个参数的回调函数;

2.紧着接我们通过add_action()这个函数把这个回调函数挂载到了woshigouzi这个动作钩子上,设置动作执行的优先级为10,并让这个回调函数可以接受两个参数;

3. 我们为这两个参数赋值;

4. 通过do_action()函数来执行挂在到woshigouzi这个动作钩子上面的函数,并把两个参数传给挂载到woshigouzi上面的回调函数;这个回调函数就会把这两个参数输出了;

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

posted @ 2018-06-15 09:52  绝技小嗨皮  阅读(935)  评论(0编辑  收藏  举报
Title