add_action()

add_action() es una de las funciones más usadas en el desarrollo WordPress. Engancha tu función a un action hook para que se ejecute en el momento adecuado.

Sintaxis completa

add_action( $hook, $callback, $prioridad, $num_args );

Parámetros explicados uno a uno

  • $hook — nombre del action hook. Ej: 'init', 'wp_footer', 'save_post'
  • $callback — función a ejecutar. Puede ser string, array o closure
  • $prioridad — orden de ejecución. Por defecto 10. Menor = antes, mayor = después
  • $num_args — cuántos argumentos acepta el callback. Por defecto 1

Formas de pasar el callback

// 1. Nombre de función
add_action( 'init', 'mi_funcion' );

// 2. Método de clase instanciada
add_action( 'init', [ $objeto, 'mi_metodo' ] );

// 3. Método estático
add_action( 'init', [ 'Mi_Clase', 'mi_metodo_estatico' ] );

// 4. Closure (función anónima)
add_action( 'init', function() {
    // código aquí
});
// ⚠ Las closures no se pueden eliminar después con remove_action()

Uso de prioridad

// Se ejecuta antes que la prioridad por defecto (10)
add_action( 'init', 'mi_funcion_primero', 5 );

// Se ejecuta después
add_action( 'init', 'mi_funcion_despues', 20 );

// Si dos callbacks tienen la misma prioridad,
// se ejecutan en el orden en que fueron registrados

Ejemplo con varios argumentos

// transition_post_status pasa 3 argumentos
add_action( 'transition_post_status', 'al_cambiar_estado', 10, 3 );
function al_cambiar_estado( $nuevo_estado, $estado_anterior, $post ) {
    if ( $nuevo_estado === 'publish' && $estado_anterior !== 'publish' ) {
        // el post acaba de publicarse
    }
}