WordPress 实用小功能:列出所有挂载到钩子和过滤器上的函数
文 / @UTHEME
小本本的技术分享
在看一些主题的代码时,经常会有一些困惑,有时代码的命名很干净,没有任何有特别功能的函数,但前端输出的代码就是多了一些我们不想要的东西。这很可能是主题作者把相应的功能挂载在WordPress的钩子上了。但是在找到这些钩子或挂载的函数时,需要逐个查找它们的代码非常耗时。今天,小本本给大家分享一种比较方便的方法。
列出所有挂载到钩子和过滤器上的函数
/**
* PrintFiltersFor
*
* Discover what functions are attached to a given hook in WordPress.
*/
function print_filters_for($hook=null){
global $wp_filter;
// Error handling
if(!$hook)
return new WP_Error('no_hook_provided', __("You didn't provide a hook."));
if(!isset($wp_filter[$hook]))
return new WP_Error('hook_doesnt_exist', __("{$hook} doesn't exist."));
// Display output
echo '<details closed>';
echo "<summary>Hook summary: <code>{$hook}</code></summary>";
echo '<pre style="text-align:left;font-size:11px;">';
print_r($wp_filter[$hook]);
echo '</pre>';
echo '</details>';
}
使用方法
例如,我使用的主题有一个自定义hook。
/* 显示面包屑导航 */
function wizhi_show_breadcrumb(){
if(function_exists('yoast_breadcrumb')){
yoast_breadcrumb('<p class="breadcrumbs">当前位置:','</p>');
}
}
add_action('mx_post_before', 'wizhi_show_breadcrumb');
现在,我需要显示挂载到此hook上的功能,只需要在function里面加入以下代码就可以了。
print_filters_for('mx_post_before');
结果如下:
Hook summary: mx_post_before
Array
(
[10] => Array
(
[show_breadcrumb] => Array
(
[function] => show_breadcrumb // 这里就是挂载到该hook上的功能。
[accepted_args] => 1
)
)
)
使用此方法可以帮助我们更好地理解WordPress主题和插件的运行机制,在开发WordPress时更加方便。如果你有更好的办法,欢迎在留言中分享。

相关文章
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
创建Vue组件详细教程 2023-09-10 00:23:17
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02
-
Astra 主题团队推出人工智能驱动的 WordPress 网站创建平台 – ZIPWP 2023-08-28 16:49:54
-
WordPress 宣布将为用户提供 100 年域名托管服务 2023-08-28 16:45:27
-
PHP判断if else 和 switch case的区别盘点 2023-07-29 15:11:11
-
详解WordPress独立站SEM中的OCPC方法(含百度推广OCPC与谷歌OCPC) 2023-07-19 08:01:30
-
WordPress的古腾堡全站编辑器site-editor.php介绍(附:site-editor.php启用代码) 2023-07-16 08:01:57
-
WordPress的Customize Partial功能最全介绍(含:demo代码) 2023-07-16 00:21:56