彻底搞懂wordpress钩子机制

WordPress的插件机制和二次开发都离不开钩子机制,它中文被翻译成钩子,让代码直接进入到WordPress任何预埋的钩子部分,是一个非常灵活的设计模式,这里强调一下,钩子机制属于一种设计模式,我爱主题网是带着设计者的眼光来详细了解它。

英文叫hook–翻译:挂钩。现在通过实例来说一下什么事wordpress钩子,wordpress主题在header.php文件中都有会加上函数wp_head(),有的还会在footer.php模板文件中添加wp_footer()函数。

我们来观察常见函数wp_head(); 该函数位于wp-includes/general-template.php文件的1577行,先看函数的构成代码:

function wp_head() {   
    do_action('wp_head');   
}  

就是一个函数中去执行另一个wordpress函数。 这个函数就简单的一句do_action(‘wp_head’) , 这个do_action()函数可以解释为:执行一个动作,这里执行的动作名称是叫wp_head的函数钩子,在开发主题过程中,一般主题开发者都会在 head 标签里加上 wp_head() 函数,事实上,这个函数调用了wp_head钩子。里面的参数wp_head并不是函数,而仅仅是一个钩子名称,这个名为wp_head动作可以具有很多函数,我们可以自定义一些函数让它归属于wp_head动作,可以形象的说成是把一个函数挂在这个动作上。do_action()函数介绍如下:

do_action($tag, $arg);   
//$tag  必需、你想创建的动作钩子的名称   
//$arg  传递给已有的动作钩子的值   

准确的说do_action()函数是创建一个动作并执行它,因为这个要执行的动作并不需要像变量一样需要先申明,do_action(‘wp_head’)就是直接创建一个叫wp_head的动作然后执行它。

那么根据这个基本语法我们来创建一个我们自己的钩子,代码如下:

do_action('hx_kaifa');

现在创建了这个动作,但是这个动作并没有包含任何函数,所以执行这个空的动作就不会执行任何函数,所以我要再往这个动作上挂一个函数,使用add_action()函数可以往动作钩子上挂函数,add_action()的介绍:

add_action( $tag, $function_to_add, $priority, $accepted_args );   
//$tag  参数必需,动作钩子的名称   
//$function_to_add  参数为必需,要执行的函数   
//$priority  参数为int(整数),优先级,数字小先执行   
//$accepted_args  参数为int(整数),函数需要的参数个数,默认1; 

这时候就知道了do_action是一定要有add_action的,他们是对应的关系,有了add,才能去do,这个记住了,是本文重点。还有一点就是可以有多个add_action,也可以指定多个do_action,他们没有数量限制,但是有顺序,就是add_action的第三个参数优先级,所以你要明白的就是他的执行顺序和代码的上下文并没有任何关系,靠的就是$priority参数值来决定执行顺序。到这里wordpress的钩子基本上就讲解完了,还有另一个钩子过滤器钩子,等到下次再做详细讲解,首先把动作钩子掌握好之后,基本下面的钩子也就很简单了。

我爱主题网 自2012
主题:260+ 销售:1000+
兼容浏览器

电话咨询

7*12服务咨询电话:

133-7205-6573

微信咨询