do_action()

do_action() es la función que crea un action hook. WordPress la usa internamente miles de veces. Cuando desarrollas tu propio plugin, la usas para hacer tu código extensible por otros.

¿Quién usa do_action()?

  • El núcleo de WordPress — para crear todos sus hooks internos
  • — cuando quieres que tu plugin sea extensible sin que nadie toque su código

Sintaxis

do_action( $hook_name, ...$args );

Ejemplo: hacer tu plugin extensible

// En mi-plugin.php — creo el hook
function mi_plugin_procesar_pedido( $pedido_id ) {

    // lógica del plugin...
    $pedido = obtener_pedido( $pedido_id );

    // Hook ANTES de guardar — cualquiera puede engancharse aquí
    do_action( 'mi_plugin_antes_guardar_pedido', $pedido_id, $pedido );

    guardar_pedido( $pedido );

    // Hook DESPUÉS de guardar
    do_action( 'mi_plugin_pedido_guardado', $pedido_id );
}

// En functions.php del tema — me engancho al hook
add_action( 'mi_plugin_pedido_guardado', 'enviar_email_confirmacion' );
function enviar_email_confirmacion( $pedido_id ) {
    wp_mail( 'cliente@ejemplo.com', 'Pedido confirmado', 'Tu pedido #' . $pedido_id . ' está listo.' );
}

Pasar argumentos al hook

// Crear el hook con 2 argumentos
do_action( 'mi_plugin_evento', $arg1, $arg2 );

// Engancharse y recibir los 2 argumentos
add_action( 'mi_plugin_evento', 'mi_funcion', 10, 2 );
function mi_funcion( $arg1, $arg2 ) {
    // disponibles aquí
}

Verificar si alguien está enganchado

if ( has_action( 'mi_plugin_evento' ) ) {
    do_action( 'mi_plugin_evento' );
}