Como usar actions y filters en WordPress con ejemplos de PHP en WordPress

Contents

Introducción

En WordPress, el sistema de acciones y filtros (hooks) es la columna vertebral que permite modificar el comportamiento y el contenido sin alterar el núcleo. Comprender cómo usar actions y filters es imprescindible para desarrollar temas y plugins robustos y mantenibles. Este artículo explica en detalle cómo funcionan, las diferencias entre ambos, ejemplos prácticos en PHP y buenas prácticas para evitar errores comunes.

Conceptos clave

  • Action: Punto en el flujo de ejecución donde WordPress ejecuta funciones (efectos secundarios). No esperan un valor de retorno. Se usan para encolar scripts, modificar cabeceras, ejecutar código al guardar entradas, etc.
  • Filter: Permite modificar un valor (por ejemplo, el contenido de una entrada) y debe devolver ese valor (modificado o no). Las funciones registradas con add_filter reciben un valor, lo procesan y retornan el resultado.
  • Prioridad: Un número que determina el orden de ejecución entre varias funciones enganchadas al mismo hook (menor número = se ejecuta antes).
  • Argumentos aceptados: Al registrar una función puedes indicar cuántos parámetros esperas, con el cuarto parámetro de add_action/add_filter.

Registro y llamada

Las llamadas principales son:

  • add_action(hook, callable, priority = 10, accepted_args = 1)
  • do_action(hook, …args)
  • add_filter(hook, callable, priority = 10, accepted_args = 1)
  • apply_filters(hook, value, …args)

Ejemplo básico: action simple

Enganchar una acción que se ejecute en init para registrar CPTs, taxonomías o inicializar lógica:

 Productos,
        public => true,
    ))
}
add_action(init, mi_inicializador, 10)
?>

Ejemplo básico: filter que modifica contenido

Modificar el contenido de entradas usando el filtro the_content. IMPORTANTE: siempre devolver el valor.

Contenido adicional al final del post

content .= insert } return content } add_filter(the_content, mi_filtro_contenido, 20) ?>

Prioridad y orden de ejecución

La prioridad por defecto es 10. Si necesitas que tu función se ejecute antes o después de otras, ajusta ese número. Ejemplo con dos funciones:


}
function despues() {
    echo 
}
add_action(wp_footer, despues, 20)
add_action(wp_footer, antes, 5)
// El resultado en el footer: primero  luego 
?>

Argumentos (accepted_args)

Algunos hooks pasan varios parámetros. Para recibirlos, debes indicar cuántos aceptas en add_action/add_filter.


Removing hooks: eliminar acciones y filtros

Para eliminar una acción o filtro usa remove_action/remove_filter. Debes pasar exactamente el mismo callable y prioridad con la que fue registrado.


En el caso de métodos de objetos (clases), eliminar requiere la misma instancia del objeto:


Ejemplos avanzados y casos prácticos

1) Encolar scripts y estilos correctamente

Usa wp_enqueue_scripts para front-end y admin_enqueue_scripts para admin.


2) Shortcode que usa filtros internos

Un shortcode puede aplicar filtros para permitir que otros lo modifiquen:

Hola mundo
// Aplicamos un filtro para que otros modifiquen el HTML generado return apply_filters(mi_shortcode_output, texto, atts) } add_shortcode(mi_shortcode, mi_shortcode_func) // Otro plugin puede cambiar salida: function modificar_shortcode(html, atts) { return str_replace(Hola, Hola desde filtro, html) } add_filter(mi_shortcode_output, modificar_shortcode, 10, 2) ?>

3) Hook en guardar post (save_post)

Ejecutar acciones al guardar una entrada (cuidado con loops infinitos).

post_type !== producto) {
        return
    }
    // Realizar acciones: actualizar metadatos, enviar emails, etc.
    update_post_meta(post_id, _guardado_por, get_current_user_id())
}
add_action(save_post, al_guardar_post, 10, 3)
?>

4) Filtros condicionales y rendimiento

Si un filtro es pesado (consultas, operaciones), condiciona su ejecución:


Buenas prácticas

  1. Usa prefijos únicos para tus funciones y hooks personalizados para evitar colisiones (p. ej. mi_plugin_).
  2. Evita side effects en filtros: no hagas output directo devuelve el valor.
  3. Desengancha con la misma prioridad y callable exacto.
  4. Controla performance: cachea resultados costosos y limita ejecución con condicionales.
  5. Documenta cuántos argumentos espera tu callback usando el cuarto parámetro de add_action/add_filter.
  6. En plugins, registra hooks durante el cargado (por ejemplo, en el archivo principal o via clase en el constructor).

Tabla rápida: hooks comunes

Hook Uso típico
init Registrar CPT, taxonomías, inicialización general
wp_enqueue_scripts Encolar scripts y estilos del front-end
admin_enqueue_scripts Encolar scripts y estilos en admin
the_content Modificar el contenido de posts
save_post Acciones al guardar un post
wp_head / wp_footer Insertar elementos en head o footer

Errores comunes y cómo evitarlos

Conclusión

Actions y filters son herramientas poderosas para personalizar WordPress. Conocer cuándo usar cada uno, cómo manejar prioridades, argumentos y cómo eliminar hooks correctamente, te permitirá construir extensiones limpias, seguras y eficientes. Aplica las buenas prácticas de prefijado, control de rendimiento y manejo correcto de retornos para evitar problemas y garantizar compatibilidad con otros plugins y temas.



Acepto donaciones de BAT's mediante el navegador Brave 🙂



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *