Action

Un Action es un hook que dispara código en un momento concreto. La diferencia clave con un Filter es que no devuelve nada: simplemente ejecuta.

¿Dónde se registra?

En functions.php o en el archivo principal del plugin, usando add_action().

add_action( 'nombre_del_hook', 'mi_funcion' );

function mi_funcion() {
    // código que se ejecuta cuando se dispara el hook
    echo '<p>Hola desde el footer</p>';
}

// Ejemplo real: añadir algo al footer
add_action( 'wp_footer', 'mi_mensaje_footer' );
function mi_mensaje_footer() {
    echo '<div class="aviso">Sitio en mantenimiento los lunes</div>';
}

Actions con argumentos

Algunos hooks pasan argumentos al callback. Hay que declarar cuántos se aceptan:

// save_post pasa 3 argumentos: $post_id, $post, $update
add_action( 'save_post', 'al_guardar_post', 10, 2 );
function al_guardar_post( $post_id, $post ) {
    // $post_id = ID del post guardado
    // $post    = objeto WP_Post
    error_log( 'Post guardado: ' . $post_id );
}

Diferencia con Filter

Action Filter
Ejecuta código Modifica un valor
No devuelve nada Siempre devuelve algo
add_action() add_filter()
do_action() apply_filters()