wordpress功能集成(二):基础知识-wordpress钩子(转)

要想为所欲为的给主题添加功能,wordpress的钩子和过滤器应该要能明白。wordpress钩子和过滤器也是插件开发的基本知识。 php

咱们经过实例来说解wordpress钩子,在第一节基础教程中咱们说到,要给主题的头部文件加上wp_head();函数,不然有的插件将不能正常工做,该函数位于wp-includes/general-template.php文件的1577行,原函数以下: css

  1. function wp_head() {   
  2.     do_action('wp_head');   
  3. }  

可一看到这个函数调用了do_action函数,传入参数"wp_head",有兴趣的看官能够继续追溯一下do_action函数,该函数位于wp-includes/plugin.php文件。不过这个函数就比较复杂了,这里就不讲解了,只须要明白会用就好。 wordpress

咱们这样解释do_action函数:do_action执行一个“动做”,这个动做名称就是这个参数"wp_head",这个wp_head动做是不须要定义的,do_action还有定义的功能,也就是先前不须要定义这个wp_head是什么、要干吗,而do_action就定义了一个名叫wp_head的动做,并执行它。 函数

可是光有一个空名称不行啊,不如你说咱们do_action('饭前'),固然这里的参数是假想的,确定不能用中文嘛,饭前具体干吗呢? spa

因此咱们还须要一个函数:add_action(),add_action跟do_action位于同一个文件中。 插件

add_action()函数能够给“动做”添加具体事务,好比前面咱们已经定义并执行了一个动做“饭前”,而后咱们add_action('饭前','洗手'),就给这个“饭前”动做添加了具体内容,在程序中来说,“洗手”这个参数应该是个函数名称,也就是执行这个函数。 教程

因此咱们do_action里面的动做叫作动做钩子(hook),钩子能够挂东西,因此add_action就是往这个钩子上挂函数,而后执行那个钩子的时候,也就是执行全部挂在这个钩子上的函数。 事务

函数: 开发

  1. <?php      
  2.     do_action($tag$arg);      
  3.     //$tag  必需、你想建立的动做钩子的名称      
  4.     //$arg  传递给已有的动做钩子的值      
  5. ?>  
  1. <?php      
  2.     add_action( $tag$function_to_add$priority$accepted_args );      
  3.     //$tag  参数必需,动做钩子的名称      
  4.     //$function_to_add  参数为必需,要执行的函数      
  5.     //$priority  参数为int(整数),数字越小越先调用      
  6.     //$accepted_args  参数为int(整数),函数须要的参数个数,默认1;      
  7.  ?>  

注意了:咱们看到do_action函数和add_action函数还有一个参数,咱们将在实例中讲解参数的应用。 rem

先看简单示例一,咱们经过wp_head()函数来往wp头部输出一个meta信息:

  1. <?php   
  2. add_action('wp_head','echo_author');   
  3. function echo_author(){   
  4.     echo '<meta name="author" content="阿树工做室" />';   
  5. }   
  6. ?>  

咱们只须要往wp_head动做上添加一个函数,输出meta信息便可,上面的函数添加在哪里呢?主题的functions.php,或者其它主题被包含的函数文件,好吧,只要主题会执行的地方。

这个应用很简单,不少插件就是这样工做的,像这样来输出css或js代码。

示例二:

此次咱们要经过钩子来传递参数了,do_action('hookname',$arg_1,$arg_2,$arg_3)除了钩子名外,还要带3个参数,而后add_action()中,除了钩子名,函数名,优先级,剩下那个就是参数的个数了,也就是挂靠的这个函数须要多少个参数,do_action传了3个参数,那么对应的add_action的accepted_args能够为0、一、二、3。少接受能够,可是多了就木有了。

例如:

  1. <?php    
  2. add_action('ashu','function1',10,2);   
  3. add_action('ashu','function2',1,3);   
  4. function function1($a1,$a2){   
  5.     echo $a1.'<br />'.$a2;   
  6. }   
  7. function function2($a1,$a2,$a3){   
  8.     echo $a1.$a2.$a3.'<br />';   
  9. }   
  10.   
  11. $arg_1 = '这里是阿树工做室';   
  12. $arg_2 = '这里有主题制做教程';   
  13. $arg_3 = '咱们提供主题定制服务';   
  14. do_action('ashu',$arg_1,$arg_2,$arg_3);   
  15. ?>  

能够看到定义并执行了一个叫“ashu”的动做钩子,而且传3个参数给动做函数,而后使用add_action,往这个钩子上挂了2个函数,function1函数须要2个参数,function2须要3个参数,因此使用add_action的时候后面对应的参数个数也是2和3。而后优先级分别是10和1,因此function2先执行。

我想到了这里,动做的使用已经很清楚了。然而关于动做钩子(hook)的函数不单单只有这两个,还有has_action() do_action_ref_array() remove_action() remove_all_action()....要想再深刻了解,能够看官网了。

相关文章
相关标签/搜索