欢迎光临
我们一直在努力

wordpress基础知识-wordpress钩子

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

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

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

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

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

但是光有一个空名称不行啊,不如你说我们do_action(‘饭前’),当然这里的参数是假想的,肯定不能用中文嘛,饭前具体干嘛呢?

所以我们还需要一个函数:add_action(),add_action跟do_action位于同一个文件中。

add_action()函数可以给“动作”添加具体事务,比如前面我们已经定义并执行了一个动作“饭前”,然后我们add_action(‘饭前’,’洗手’),就给这个“饭前”动作添加了具体内容,在程序中来讲,“洗手”这个参数应该是个函数名称,也就是执行这个函数。

所以我们do_action里面的动作叫做动作钩子(hook),钩子可以挂东西,所以add_action就是往这个钩子上挂函数,然后执行那个钩子的时候,也就是执行所有挂在这个钩子上的函数。

函数:

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

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

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

<?php 
add_action('wp_head','echo_author'); 
function echo_author(){ 
echo '<meta name="author" content="阿树工作室" />'; 
} 
?>

我们只需要往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、1、2、3。少接受可以,但是多了就木有了。

例如:

<?php 
add_action('ashu','function1',10,2); 
add_action('ashu','function2',1,3); 
function function1($a1,$a2){ 
echo $a1.'<br />'.$a2; 
} 
function function2($a1,$a2,$a3){ 
echo $a1.$a2.$a3.'<br />'; 
} 

$arg_1 = '这里是阿树工作室'; 
$arg_2 = '这里有主题制作教程'; 
$arg_3 = '我们提供主题定制服务'; 
do_action('ashu',$arg_1,$arg_2,$arg_3); 
?>

可以看到定义并执行了一个叫“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()….要想再深入了解,可以看官网了。

原文链接:https://www.ashuwp.com/courses/noplugin/129.html

窗外天空
关注公众号『窗外天空』

获取更多建站运营运维新知!
互联网创业、前沿技术......

赞(0) 打赏
文章名称:《wordpress基础知识-wordpress钩子》
文章链接:https://www.nixonli.com/23525.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏