您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
WordPress动作钩子函数add_action()、do_action()解析
吴越潇2025-02-19 17:00:17WordPress教程已有8人查阅
导读WordPress常用两种钩子,过滤钩子和动作钩子。过滤钩子相关函数及源码分析在上篇文章中完成,本篇主要分析动作钩子源码。然而,在了解了动作钩子的源码后你会发现,动作钩子核心代
WordPress常用两种钩子,过滤钩子和动作钩子。过滤钩子相关函数及源码分析在上篇文章中完成,本篇主要分析动作钩子源码。
然而,在了解了动作钩子的源码后你会发现,动作钩子核心代码竟然跟过滤钩子差不多!是的,至此,我不得不告诉你,动作钩子只是WP开发者为了区分概念而把过滤钩子另外命名的一种东西!当然,它们还是有一些细微的差别,下面我们将从源码来深入解读。
动作钩子概念:动作钩子是WP代码执行到某处或某个事件发生时触发的一系列函数,插件可以利用动作钩子API在WP代码执行的特定点之前插入一系列函数以控制执行。它跟过滤钩子极像,唯一不同的是过滤钩子返回一个处理后的值,而动作钩子仅完成函数执行并不返回值,如果钩子不存在则返回NULL并新增该钩子。
动作钩子原理:由于动作钩子和过滤钩子几乎一样,所以它们的实现原理也是一样的。它主要利用一个全局变量$wp_filter,增加动作函数时使用add_action()函数给全局变量$wp_filter增加了一个数组元素,这个元素键名中含有钩子名,值中含有对应函数及执行优先级等信息,在调用do_action()函数使用动作钩子时,它通过循环查找出所有跟钩子关联的函数并将其依次调用,之后返回处理后的数据。
动作钩子使用步骤:
由于PHP代码会经过Zend等引擎翻译,代码中步骤的先后顺序并不重要,所以以下步骤仅为便于理解钩子原理的伪步骤,不具有实际参考意义!
1、创建钩子(可省略):使用do_action()函数可以创建一个没有挂载函数的钩子,挂载函数可以通过add_action()添加,之后再使用do_action()调用执行;
2、创建动作函数:它可以有传入参数也可以无传入参数,其他与创建普通函数没有任何区别,函数的作用为完成某项动作;
3、挂载函数:即使用add_action()将函数挂载到指定钩子上;
4、执行动作钩子:使用do_action()可以依次执行挂载在指定钩子上的所有函数以完成指定任务;
动作钩子函数详解:
在看动作钩子函数作用、参数说明等时,你会发现几乎是跟过滤钩子重复的。至于为什么会这样,那就要看源码了,我保证,看完源码后你会感慨自己被WP开发者涮了!
1、add_action($tag,$function_to_add,$priority = 10,$accepted_args = 1)
add_action()作用:该函数用于给指定的动作钩子$tag添加指定的挂载函数$function_to_add,同时它可以确定挂载函数执行优先级及其可接收参数个数;
add_action()参数说明:
$tag为钩子名;
$function_to_add为挂载函数名;
可选参数$priority为该挂载函数执行的优先级,默认为10,该数字越小则越早执行,数字相同则按其添加到钩子上的顺序执行,越早添加越早执行;
可选参数$accepted_args确定挂载函数接收的参数个数,默认为1;
add_action()源码分析: 怎么样,看到了吧!被坑了有木有!add_action()函数的代码竟然是调用一次add_filter()!这尼玛完全是一个人的大名和小名的问题有木有!
2、do_action($tag, $arg = '')
do_action()作用:该函数调用挂载在过滤钩子$tag上的所有函数以完全特定的任务;
do_action()参数说明:
$tag为钩子名;
$arg为动作钩子上挂载函数的传入参数,默认为空;
do_action()源码分析: 看过动作钩子的源码,是不是惊呼,原来这丫就是过滤钩子换了个名儿而已!
然而,在了解了动作钩子的源码后你会发现,动作钩子核心代码竟然跟过滤钩子差不多!是的,至此,我不得不告诉你,动作钩子只是WP开发者为了区分概念而把过滤钩子另外命名的一种东西!当然,它们还是有一些细微的差别,下面我们将从源码来深入解读。
动作钩子概念:动作钩子是WP代码执行到某处或某个事件发生时触发的一系列函数,插件可以利用动作钩子API在WP代码执行的特定点之前插入一系列函数以控制执行。它跟过滤钩子极像,唯一不同的是过滤钩子返回一个处理后的值,而动作钩子仅完成函数执行并不返回值,如果钩子不存在则返回NULL并新增该钩子。
动作钩子原理:由于动作钩子和过滤钩子几乎一样,所以它们的实现原理也是一样的。它主要利用一个全局变量$wp_filter,增加动作函数时使用add_action()函数给全局变量$wp_filter增加了一个数组元素,这个元素键名中含有钩子名,值中含有对应函数及执行优先级等信息,在调用do_action()函数使用动作钩子时,它通过循环查找出所有跟钩子关联的函数并将其依次调用,之后返回处理后的数据。
动作钩子使用步骤:
由于PHP代码会经过Zend等引擎翻译,代码中步骤的先后顺序并不重要,所以以下步骤仅为便于理解钩子原理的伪步骤,不具有实际参考意义!
1、创建钩子(可省略):使用do_action()函数可以创建一个没有挂载函数的钩子,挂载函数可以通过add_action()添加,之后再使用do_action()调用执行;
2、创建动作函数:它可以有传入参数也可以无传入参数,其他与创建普通函数没有任何区别,函数的作用为完成某项动作;
3、挂载函数:即使用add_action()将函数挂载到指定钩子上;
4、执行动作钩子:使用do_action()可以依次执行挂载在指定钩子上的所有函数以完成指定任务;
动作钩子函数详解:
在看动作钩子函数作用、参数说明等时,你会发现几乎是跟过滤钩子重复的。至于为什么会这样,那就要看源码了,我保证,看完源码后你会感慨自己被WP开发者涮了!
1、add_action($tag,$function_to_add,$priority = 10,$accepted_args = 1)
add_action()作用:该函数用于给指定的动作钩子$tag添加指定的挂载函数$function_to_add,同时它可以确定挂载函数执行优先级及其可接收参数个数;
add_action()参数说明:
$tag为钩子名;
$function_to_add为挂载函数名;
可选参数$priority为该挂载函数执行的优先级,默认为10,该数字越小则越早执行,数字相同则按其添加到钩子上的顺序执行,越早添加越早执行;
可选参数$accepted_args确定挂载函数接收的参数个数,默认为1;
add_action()源码分析: 怎么样,看到了吧!被坑了有木有!add_action()函数的代码竟然是调用一次add_filter()!这尼玛完全是一个人的大名和小名的问题有木有!
2、do_action($tag, $arg = '')
do_action()作用:该函数调用挂载在过滤钩子$tag上的所有函数以完全特定的任务;
do_action()参数说明:
$tag为钩子名;
$arg为动作钩子上挂载函数的传入参数,默认为空;
do_action()源码分析: 看过动作钩子的源码,是不是惊呼,原来这丫就是过滤钩子换了个名儿而已!
本文标签:
很赞哦! (1)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
腾讯云服务器宝塔面板搭建wordpress的方法
服务器较大的用途,就是可以搭建网站,许多人都认为搭建网站是一件很难的事情,因为包含许多的比较专业东西,比如服务器、编程之类的,确实,在几年前是这样的,普通人想要自己做一个网站怎么给WordPress网站添加Javascript代码
如果是修改自己制作的模板主题,升级和更新自己掌控,javascript代码的添加比较自由,可根据实际业务逻辑引入即可。WordPress用户系统总结
keyword:WordPress,用户,评论,注冊。登录,社交化登录。社交化评论,个人博客,公共博客曾经我在QQ空间或CSDN写文章,后来自己搭建了一个站点。初次使用WordPress就发现和CSDN等站点相wordpress怎么建立网站
根据WPBeginner的定义,域名即用户能够在网络上辨别目标网站的地址。搭建WordPress网站的 头一步需要发现和购买域名。不幸的是,并非所有域名都是可用的。
留言与评论 (共有 0 条评论) |