Wordpress:找出哪个钩子叫做函数

时间:2013-10-10 19:56:19

标签: wordpress hook

我正在试图弄清楚同一个函数是否挂钩到多个动作上,我可以找出哪个动作调用它吗?

我想在创建和删除用户时发送API调用;两种情况下的功能都是相同的,只是一个数据点根据创建或删除的不同而不同。只用一个区别制作两个相同的功能感觉不对,但我不确定我能做到的其他功能。

么?

2 个答案:

答案 0 :(得分:7)

这是函数current_filter()

add_action( 'plugins_loaded', 'common_action' );
add_action( 'admin_init', 'common_action' );

function common_action()
{
    switch( current_filter() )
    {
        case 'plugins_loaded':
            // do_something( 'Plugins loaded' );
        break;
        case 'admin_init':
            // do_another_thing( 'Admin init' );
        break;
    }
}

答案 1 :(得分:1)

我有同样的问题 - 在运行一个函数时,哪个动作触发了它?关键是$wp_current_filter

示例:

//  Both of these will call the same function
do_action('wp', 'my_function');
do_action('init', 'my_function');

function my_function() {
    // How do I know if this was 'init', 'wp', or some other hook?
    // Global in the WordPress variable $wp_filter
    global $wp_current_filter;
    if ($wp_current_filter == 'wp' || in_array('wp', $wp_current_filter)) {
        // Do my "wp" based stuff....
    }
    if ($wp_current_filter == 'init' || in_array('init', $wp_current_filter)) {
        // Do my "init" based stuff....
    }
}

注意:这是一个糟糕的用例示例,但它传达了原则!