WordPress 实用小功能:列出所有挂载到钩子和过滤器上的函数

在查看有些主题的代码的时候,我们经常会看得一头雾水,命名代码里面是很干净的,没有特殊的功能函数,但是前台输出的代码就是多了一些我们不想要的东西,这很可能就是主题作者把相应的功能挂载到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: $hook"; echo '
';
 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开发的时候,会容易很多。如果你有更好的办法,欢迎在留言中分享。

声明:本站资源绿色无后门无广告,可放心下载。如无特殊说明或标注,均为本站原创发布,转载请注明出处!