在查看有些主题的代码的时候,我们经常会看得一头雾水,命名代码里面是很干净的,没有特殊的功能函数,但是前台输出的代码就是多了一些我们不想要的东西,这很可能就是主题作者把相应的功能挂载到WordPress的hook上面了。但是到底是挂在到哪个hook上的,或者说一个hook上到底挂载了哪些功能,一点一点的都代码去查找是在是太慢了,今天给大家分享一个比较便捷的方法。
列出所有挂载到钩子和过滤器上的函数
/** * Print Filters For * * 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 ''; echo "Hook summary:
"; echo '$hook
'; print_r( $wp_filter[$hook] ); echo '';
echo '';
}
使用方法
例如,我使用的主题有一个自定义hook。/* 显示面包屑导航 */ function wizhi_show_breadcrumb() { if ( function_exists( 'yoast_breadcrumb' ) ) { yoast_breadcrumb( '' ); } } add_action( 'mx_post_before', 'wizhi_show_breadcrumb' );现在,我需要显示挂载到此hook上的功能,只需要在function里面加入以下代码就可以了。
print_filters_for('mx_post_before');显示出来了结果如下:
Hook 概要: mx_post_beforeArray ( [10] => Array ( [show_breadcrumb] => Array ( [function] => show_breadcrumb //这里就是挂载到该hook上的功能。 [accepted_args] => 1 ) ) )有了这个方法,对于我们理解WordPress主题和插件的运行机制有很大的帮助,做WordPress开发的时候,会容易很多。如果你有更好的办法,欢迎在留言中分享。