2013-10-10 26 views
5

我想弄清楚,如果相同的功能掛鉤到多個動作,我可以找出哪個動作調用它?WordPress的:找出哪個鉤叫功能

我想在創建和刪除用戶時發送API調用;兩種情況下的功能都是相同的,只是一個數據點根據創建或刪除的情況而不同。它感覺不到兩個相同的功能只有一個區別,但我不確定我能做到這一點。

建議?

回答

6

這就是功能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

我有同樣的問題 - 運行的功能,其行動觸發它的時候?關鍵是$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.... 
    } 
} 

注:這是一個糟糕的用例的例子,但它傳達的原則!