一文搞懂什么是WordPress的钩子

@H_502_0@wordpress钩子是开发wordpress主题插件中很重要的一个概念,搞懂wordpress钩子,可以帮让我们在开发主题时事半功倍。

@H_502_0@wordpress常用的有两种钩子,一种是动作(action),另外一种是过滤器(filter)钩子。

动作钩子概念

@H_502_0@动作钩子是wordpress代码执行到某处或某个事件发生时触发的一系列函数插件可以利用动作钩子API在WP代码执行的特定点之前插入一系列函数以控制执行。它跟过滤钩子极像,唯一不同的是过滤钩子返回一个处理后的值,而动作钩子仅完成函数执行并不返回值,如果钩子不存在则返回NULL并新增该钩子。

过滤钩子原理

@H_502_0@其实动作钩子和过滤钩子它们的实现原理是一样的。它主要利用一个全局变量$wp_filter,增加动作函数时使用add_action()函数全局变量$wp_filter增加一个数组元素,这个元素键名中含有钩子名,值中含有对应函数及执行优先级等信息,在调用do_action()函数使用动作钩子时,它通过循环查找出所有跟钩子关联的函数并将其依次调用,最后返回处理后的数据。

语法结构

add_action($hook,$function_to_add,$priority = 10,$accepted_args = 1)
@H_502_0@add_action()作用:该函数用于给指定的动作钩子$hook添加指定的挂载函数$function_to_add,同时它可以确定挂载函数执行优先级及其可接收参数个数;

@H_502_0@$hook 为钩子名
$function_to_add 为挂载函数
可选参数$priority为该挂载函数执行的优先级,认为10,该数字越小则越早执行,数字相同则按其添加到钩子上的顺序执行,越早添加越早执行
可选参数$accepted_args确定挂载函数接收的参数个数,认为1

@H_502_0@之前写过这个函数,感兴趣的可以详细了解:add_action

例子说明

@H_502_0@在wp-includes/general-template.PHP文件中有一个wp_head动作钩子,我们可以看看这个动作钩子函数

function wp_head() {
do_action('wp_head');
}
@H_502_0@其中里面有个do_action,定义了wp_head钩子,我们在用这个钩子的时候使用了add_action(‘wp_head’,‘xxzhuti_wp_head’),由此可见do_action定义了一个动作,并且执行了定义的这个动作,根据这个原理我们也可以用do_action定义自己的动作钩子。

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...