Products
GG网络技术分享 2025-03-18 16:13 140
wordpress钩子是开发wordpress主题和插件中很重要的一个概念,搞懂wordpress钩子,可以帮让我们在开发主题时事半功倍。
WordPress常用的有两种钩子,一种是动作(action),另外一种是过滤器(filter)钩子。
动作钩子是wordpress代码执行到某处或某个事件发生时触发的一系列函数,插件可以利用动作钩子API在WP代码执行的特定点之前插入一系列函数以控制执行。它跟过滤钩子极像,唯一不同的是过滤钩子返回一个处理后的值,而动作钩子仅完成函数执行并不返回值,如果钩子不存在则返回NULL并新增该钩子。
其实动作钩子和过滤钩子它们的实现原理是一样的。它主要利用一个全局变量$wp_filter,增加动作函数时使用add_action()函数给全局变量$wp_filter增加了一个数组元素,这个元素键名中含有钩子名,值中含有对应函数及执行优先级等信息,在调用do_action()函数使用动作钩子时,它通过循环查找出所有跟钩子关联的函数并将其依次调用,最后返回处理后的数据。
add_action()作用:该函数用于给指定的动作钩子$hook添加指定的挂载函数$function_to_add,同时它可以确定挂载函数执行优先级及其可接收参数个数;
$hook 为钩子名
$function_to_add 为挂载函数名
可选参数$priority为该挂载函数执行的优先级,默认为10,该数字越小则越早执行,数字相同则按其添加到钩子上的顺序执行,越早添加越早执行
可选参数$accepted_args确定挂载函数接收的参数个数,默认为1
之前写过这个函数,感兴趣的可以详细了解:add_action
在wp-includes/general-template.php文件中有一个wp_head动作钩子,我们可以看看这个动作钩子函数
其中里面有个do_action,定义了wp_head钩子,我们在用这个钩子的时候使用了add_action(‘wp_head’, ‘xxzhuti_wp_head’),由此可见do_action定义了一个动作,并且执行了定义的这个动作,根据这个原理我们也可以用do_action定义自己的动作钩子。
本文介绍了WordPress开发中最重要的话题之一:WordPress钩子,包括动作钩子和过滤钩子。钩子不仅是WordPress插件工作方式的核心,而且是WordPress生态系统中几乎所有代码的核心:大多数WordPress主题都大量使用钩子,“WordPress核心”本身也是如此。WordPress钩子是WordPress开发中一个绝对必须知道的话题。
如果您已经理解了上面的过滤器示例,那么您将了解有关WordPress操作示例的几乎所有内容:
正如我们所指出的,与我们的过滤器示例的主要区别是钩住的函数不返回任何东西。相反,它直接在页面上回显(打印)消息。这条消息将打印在哪里?它将打印在页脚部分的最开始,无论主题作者在哪里放置了wp\\\\u页脚操作钩子。
这种不同的操作可以做大多数事情,过滤器必须返回对给定内容的修改,这是这两种函数之间的主要区别,这两种函数在其他方面非常相似。
WordPress使用动作和过滤器来扩展它所能做的,从我们今天展示的愚蠢的例子,一直到像WooCommerce这样的超复杂插件。我们已经了解了钩子、动作和过滤器的用途,以及它们如何工作的基础知识。
总而言之:WordPress在WordPress页面生成过程中的特定位置注册操作和过滤器挂钩。任何开发人员都可以编写自己的函数来钩住这些操作和过滤器钩子。过滤器(或“过滤器函数”)修改所给的内容,并通过返回返回;操作(或“操作函数”)可以回显文本、修改数据和其他任何内容,并且不需要返回值。
WordPressHooks系统实际上是WordPress全面开发的门户,所以不要害怕回顾这些资料,对其进行实验,并使其成为您自己的。
Demand feedback