wordpress在适当页面查看支持的Hook

最近在研究开发,wordpress的Hook(钩子)太多了,甚至主题、插件也能自己写Hook,我们要记忆这些Hook的话是很困难的,而且钩子还分为动作钩子和过滤钩子,那有没有一种方便调试的方法呢?其实是有的。

我们先回到如何创建一个钩子,并调用它:

1、动作钩子:

do_action('action_name');

add_action( 'action_name', 'your_function_name' );
function your_function_name() {
// 业务代码
}

2、过滤钩子:

$variable = apply_filter( 'filter_name', $variable );

add_filter( 'filter_name', 'your_function_name' );
function your_function_name( $variable ) {
// 业务代码
return $variable;
}

我们可以发现,在创建动作钩子时会执行do_action函数,而在创建过滤钩子的时候会执行apply_filter,那我们修改调试创建函数,是不是就能看到哪里有钩子,有些什么钩子;或者我们再看,动作钩子在执行业务代码时都会执行add_action函数,而过滤钩子在执行业务代码的时候都会执行add_filter。而其实action和filter的底层是相同的。

那我们就可以修改两个地方,来显示动作钩子和过滤钩子了。

1、修改add_action和add_filter源码

上面说到,action和liter底层相同,最终,我们的add_action是通过add_filter实现的,所以我们只需要修改add_filter源码即可,最终,我是在“/wp-includes/plugin.php”查询到源码,注意如下129行,就是我添加的,不严谨,应该是要不显示,重定向存储到其他地方才好,这样有的地方会报错吧,不过不影响我们分析。

图片[1]-wordpress在适当页面查看支持的Hook - KEKC博客-KEKC博客

2、修改do_action和apply_filter源码

修改do_action源码,“/wp-includes/plugin.php”第518行:

图片[2]-wordpress在适当页面查看支持的Hook - KEKC博客-KEKC博客

修改apply_filter源码,“/wp-includes/plugin.php”第206行:

图片[3]-wordpress在适当页面查看支持的Hook - KEKC博客-KEKC博客

其实,经过阅读源码,我们发现其实还可以通过全局变量来查询有哪些hook,将以下代码放在主题functions.php或者是写成插件,总之,找个合适的位置放上去,当然,这和我们的标题似乎不符合,因为这查看的是所有Hook,我的代码如下:

function kekc_get_hooks(){
	global $wp_filter,$wp_actions,$wp_filters,$wp_current_filter;
	//filters
	var_dump($wp_filter);
}

add_action("​shutdown​​ ","kekc_get_hooks",9999999999);//但记住,后台在shutdown之后还有一个wp_dashboard_setup​钩子。

至此,你应该已经对WordPress的钩子有了进一步的了解了。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享