Qué son los hooks de WordPress: actions y filters

hooks WordPress actions y filters con ejemplos de código en functions.php

Qué son los hooks de WordPress: actions y filters

Los hooks son la razón por la que puedes instalar un plugin y que cambie el comportamiento de WordPress sin que nadie haya editado el núcleo. Son el sistema de extensibilidad: puntos en el código donde WordPress dice «si alguien tiene algo que añadir aquí, que lo haga ahora». Entenderlos es lo que separa a quien personaliza WordPress modificando archivos del core (mal) de quien lo hace correctamente.

Dos tipos de hooks: actions y filters

Actions: permiten ejecutar código en un momento específico. WordPress llega a ese punto, tu función se ejecuta, hace lo suyo, y el flujo continúa. No devuelves ningún valor.

Filters: permiten modificar un dato antes de que WordPress lo use. WordPress tiene un valor, lo pasa por el filtro y recibe de vuelta el valor modificado (o no). Siempre debes devolver algo desde una función de filtro.

Cómo usar add_action

add_action( 'hook_name', 'mi_funcion', $prioridad, $num_args );

function mi_funcion() {
    // Código que se ejecuta cuando ocurre hook_name
}

La prioridad (por defecto 10) determina el orden cuando varias funciones están enganchadas al mismo hook: número menor = se ejecuta antes.

Ejemplo real: cargar scripts solo en páginas específicas.

add_action( 'wp_enqueue_scripts', 'cargar_mi_script' );

function cargar_mi_script() {
    if ( is_page('contacto') ) {
        wp_enqueue_script( 'mi-script', get_template_directory_uri() . '/js/contacto.js', array(), '1.0', true );
    }
}

Cómo usar add_filter

add_filter( 'hook_name', 'mi_filtro', $prioridad, $num_args );

function mi_filtro( $valor ) {
    // Modificar $valor
    return $valor; // Siempre devuelve algo
}

Ejemplo real: modificar la longitud del extracto.

add_filter( 'excerpt_length', 'mi_longitud_extracto' );

function mi_longitud_extracto( $length ) {
    return 30; // 30 palabras en lugar de las 55 por defecto
}

Ejemplo real: añadir texto al final de cada post.

add_filter( 'the_content', 'anadir_firma_post' );

function anadir_firma_post( $content ) {
    if ( is_single() ) {
        $content .= '<p>¿Te ha resultado útil? Comparte el artículo.</p>';
    }
    return $content;
}

Hooks más usados en el desarrollo diario

wp_enqueue_scripts: para cargar scripts y estilos en el frontend. El lugar correcto, nunca directamente en el header.php.

admin_enqueue_scripts: igual pero para el panel de administración.

init: se ejecuta después de que WordPress carga pero antes de mostrar cabeceras. Para registrar tipos de post personalizados, taxonomías o hacer redirecciones.

save_post: se ejecuta cuando se guarda un post. Para añadir lógica al guardar contenido.

the_content: filtro que pasa el contenido de cada post antes de mostrarlo.

wp_head: para añadir código en el <head> de todas las páginas.

wp_footer: para añadir código antes del cierre de </body>.

Dónde poner el código de hooks

El lugar correcto es el functions.php del tema hijo. Si el código es independiente del tema, lo correcto es crear un plugin específico con ese código — sobrevive a los cambios de tema.

Nunca en los archivos del tema padre: desaparecen con cada actualización. Nunca directamente en el core de WordPress: los perderás con la próxima actualización y no hay ninguna razón técnica para hacerlo.

Hosting Web SSD ultrarrápido e ilimitado

Hosting Web SSD NVMe, 100% Ecológico y sostenible, máxima velocidad y tráfico ilimitado en tu Hosting Web, con certificado SSL gratuito 

Hosting Web logo

Hosting Web ecológico, profesional e ilimitado en España,  somos especialistas en servicios de Hosting SSD, con más de 22 años de experiencia y un equipo de profesionales altamente cualificados a su disposición las 24 Horas.