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.phpde 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) |