WordPress: averiguar qué gancho llamó a una función

1 minuto de lectura

Estoy tratando de averiguar si la misma función está vinculada a varias acciones, ¿puedo averiguar qué acción la llama?

Me gustaría enviar una llamada a la API cuando se crea y elimina un usuario; la funcionalidad en ambos casos es la misma, excepto que un punto de datos sería diferente en función de si se crea o elimina. No se siente bien hacer dos funciones idénticas con una sola diferencia, pero no estoy seguro de cómo puedo hacerlo.

¿Consejo?

esa es la funcion 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;
    }
}

avatar de usuario
nombre_de_usuario_aleatorio

Tenía la misma pregunta: al ejecutar una función, ¿qué acción la activaba? La clave es $wp_current_filter.

Ejemplo:

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

Nota: Este es un pésimo ejemplo de caso de uso, ¡pero transmite los principios!

¿Ha sido útil esta solución?