Hooks
🧩 Tipos de hooks en WordPress
WordPress tiene dos tipos principales de hooks:
- Actions (
add_action
) – Ejecutan una función en un punto específico del proceso (por ejemplo, al cargar el encabezado, guardar una entrada, mostrar el pie de página…). - Filters (
add_filter
) – Permiten modificar un valor antes de que se muestre o se use (por ejemplo, cambiar el contenido de una entrada, modificar un título, ajustar una URL…).
🧪 1. Action Hooks – add_action
Sirven para ejecutar una función personalizada en un momento determinado del flujo de WordPress.
📌 Sintaxis
add_action('hook_name', 'nombre_funcion');
function nombre_funcion() {
// Tu código
}
✅ Ejemplo: Añadir texto al pie de página
add_action('wp_footer', 'agregar_mensaje_al_footer');
function agregar_mensaje_al_footer() {
echo '<p style="text-align:center;color:gray;">Gracias por visitarnos.</p>';
}
Este código añade un mensaje al final de cada página, justo antes del </body>
.
🧪 2. Filter Hooks – add_filter
Se usan para modificar datos antes de que se usen o muestren.
📌 Sintaxis
add_filter('hook_name', 'nombre_funcion');
function nombre_funcion($valor) {
// Modificar y devolver
return $nuevo_valor;
}
✅ Ejemplo: Añadir texto al final del contenido de las entradas
add_filter('the_content', 'agregar_firma_al_contenido');
function agregar_firma_al_contenido($contenido) {
if (is_single()) {
$contenido .= '<p><em>Publicado por Ana Meraga.</em></p>';
}
return $contenido;
}
Este código añade una firma solo en las entradas individuales (is_single()
).
🔁 Otro ejemplo de filter: Cambiar el título de las entradas
add_filter('the_title', 'prefixar_titulos');
function prefixar_titulos($titulo) {
if (is_singular('post')) {
return '📝 ' . $titulo;
}
return $titulo;
}
📦 Dónde se colocan los hooks
- En un plugin personalizado
- En el archivo
functions.php
de tu tema o tema hijo - En un plugin de funciones como “Code Snippets”
📚 Hooks comunes en WordPress
📌 Hooks de acción (actions)
Hook | Cuándo se ejecuta |
---|---|
init |
Al iniciar WordPress |
wp_enqueue_scripts |
Para cargar scripts y estilos |
admin_menu |
Para añadir elementos al menú del panel |
save_post |
Al guardar una entrada |
wp_footer |
Justo antes del cierre del <body> |
📌 Hooks de filtro (filters)
Hook | Qué modifica |
---|---|
the_content |
El contenido de las entradas |
the_title |
El título de entradas y páginas |
excerpt_more |
El texto del “Leer más” |
upload_mimes |
Tipos de archivos permitidos en medios |
widget_title |
Título de widgets |
🔧 Ejemplo completo práctico: Añadir un aviso solo para administradores
add_action('admin_notices', 'mensaje_para_admins');
function mensaje_para_admins() {
if (current_user_can('administrator')) {
echo '<div class="notice notice-success"><p>¡Hola administrador! Este es un aviso personalizado.</p></div>';
}
}
✅ Buenas prácticas
- Usa prefijos en tus funciones para evitar conflictos (ej.
miweb_agregar_firma()
). - Siempre verifica condiciones (por ejemplo,
is_admin()
ois_single()
). - Documenta tus hooks con comentarios.
- Usa
remove_action()
oremove_filter()
si necesitas desactivar hooks existentes.
🎓 Resumen visual
Tipo | Función | Ejemplo |
---|---|---|
Action | Ejecutar algo | Añadir mensaje al pie (wp_footer ) |
Filter | Modificar un valor | Cambiar contenido (the_content ) |