WordPress: Herausfinden, welcher Hook eine Funktion aufgerufen hat

Lesezeit: 1 Minute

Ich versuche herauszufinden, ob dieselbe Funktion mit mehreren Aktionen verbunden ist. Kann ich herausfinden, welche Aktion sie aufruft?

Ich möchte einen API-Aufruf senden, wenn ein Benutzer erstellt und gelöscht wird; Die Funktionalität ist in beiden Fällen gleich, außer dass ein Datenpunkt unterschiedlich wäre, je nachdem, ob er erstellt oder gelöscht wird. Es fühlt sich nicht richtig an, zwei identische Funktionen mit nur einem Unterschied zu machen, aber ich bin mir nicht sicher, wie ich es sonst machen könnte.

Rat?

Das ist die Funktion 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;
    }
}

  • Großartig, Kumpel, ich würde dich total positiv bewerten, wenn ich könnte!

    – Brasilo

    1. September um 14:33 Uhr

Benutzer-Avatar
random_user_name

Ich hatte die gleiche Frage – beim Ausführen einer Funktion, welche Aktion hat sie ausgelöst? Der Schlüssel ist $wp_current_filter.

Beispiel:

//  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....
    }
}

Notiz: Dies ist ein lausiges Anwendungsbeispiel, aber es vermittelt die Prinzipien!

1373830cookie-checkWordPress: Herausfinden, welcher Hook eine Funktion aufgerufen hat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy