Introducción
Este tutorial explica, con todo lujo de detalles, cómo personalizar el header de tu sitio WordPress usando dos métodos prácticos y seguros: 1) agregar CSS desde el Personalizador (Apariencia → Personalizar → CSS adicional) y 2) añadir fragmentos (snippets) con un plugin tipo Code Snippets para insertar CSS o PHP que complemente la personalización. Encontrarás ejemplos reales, buenas prácticas, soluciones a problemas comunes y fragmentos listos para copiar y pegar.
Preparación y precauciones
- Haz copia de seguridad antes de tocar estilos o código.
- Si tu tema tiene un child theme, úsalo para cambios más permanentes. Si no quieres tocar archivos, el Personalizador y los snippets son alternativas seguras.
- Desactiva temporariamente la caché del sitio (plugins tipo WP Super Cache, W3 Total Cache, etc.) mientras pruebas cambios.
- Ten a mano las herramientas del navegador (Inspeccionar elemento) para localizar selectores exactos.
Cómo identificar los selectores correctos
Antes de escribir CSS, identifica las clases/IDs del header con el inspector del navegador. Busca los elementos clave: contenedor del header, logo, menú, botones, barra superior, etc. Presta atención a la especificidad (clases, IDs, selectores anidados).
Consejos para inspeccionar
- Hover sobre elementos y revisa reglas CSS aplicadas y su origen.
- Localiza el selector más cercano que no cambie con actualizaciones del tema (evita selectores generados dinámicamente).
- Si el tema usa columnas o grid, revisa también reglas de display, align-items y z-index.
1) Personalizar el header con CSS desde el Personalizador
Ruta: Apariencia → Personalizar → CSS adicional. Ahí puedes pegar CSS que afectará al header, con actualización previa en vivo. Ventajas: inmediato y seguro. Desventajas: si el tema sobrescribe reglas muy específicas, puede que necesites usar más especificidad o !important (usar con moderación).
Ejemplo: cambiar fondo, tamaño de logo y espacio del menú
Ejemplo genérico — adapta selectores según tu tema:
/ Fondo del header /
.site-header {
background-color: #0b3d91
box-shadow: 0 2px 8px rgba(0,0,0,0.12)
}
/ Ajustar tamaño del logo (si es imagen dentro de .site-branding img) /
.site-branding img {
max-height: 70px
width: auto
}
/ Espaciado del menú principal /
.main-navigation ul.menu {
gap: 1.2rem
}
/ Aumentar el z-index para que el header siempre esté por encima /
.site-header {
z-index: 9999
}
Ejemplo: header fijo (sticky) y responsive
/ Header fijo /
.site-header {
position: fixed
top: 0
left: 0
right: 0
transition: background-color 0.25s ease, padding 0.25s ease
}
/ Añadir margen superior al cuerpo para no tapar contenido /
body {
margin-top: 80px / ajustar según la altura real del header /
}
/ Responsive: reducir tamaño del logo en pantallas pequeñas /
@media (max-width: 768px) {
.site-branding img {
max-height: 48px
}
.main-navigation ul.menu {
gap: 0.6rem
}
}
Notas sobre especificidad y !important
- Si tu regla no aplica, intenta aumentar la especificidad usando selectores más concretos (por ejemplo, header.site-header .main-navigation).
- Como último recurso, usa !important pero solo en propiedades puntuales donde no hay alternativa.
2) Usar un plugin de fragmentos (Code Snippets) para añadir CSS o PHP
El plugin Code Snippets permite añadir y gestionar fragmentos de código (PHP o CSS/JS) sin tocar archivos del tema. Puedes crear un snippet que imprima estilos en el head o que añada clases/funcionalidades al header mediante filtros.
Opción A — Añadir CSS desde un snippet (echo en head)
Snippet PHP que inyecta CSS en el header. Útil si quieres agrupar CSS con otros fragmentos o condicionar su carga.
/ Título: Header - CSS inyectado /
/ Ejecutar en: Admin Frontend (o solo Frontend) /
add_action(wp_head, function() {
?>
Opción B — Añadir CSS con wp_add_inline_style (forma más correcta)
Si conoces el handle del stylesheet principal del tema (por ejemplo theme-style), puedes inyectar CSS de forma más correcta:
/ Título: Header - Inline CSS con wp_add_inline_style /
add_action(wp_enqueue_scripts, function() {
css =
header.site-header { background-color: #123456 padding: 16px 0 }
header.site-header .site-branding img { max-height: 64px }
// Reemplaza theme-style por el handle real (consulta el functions.php de tu tema)
if ( wp_style_is(theme-style, enqueued) ) {
wp_add_inline_style(theme-style, css)
} else {
// Si no existe el handle, puedes forzar la inclusión directa
wp_register_style(custom-inline-header, false)
wp_enqueue_style(custom-inline-header)
wp_add_inline_style(custom-inline-header, css)
}
}, 20)
Opción C — Añadir una clase condicional al body para estilos específicos
Si quieres activar estilos sólo en determinadas páginas (ej. solo en la home o solo en plantillas con hero), añade una clase al body desde un snippet y escribe CSS dirigido a esa clase.
/ Título: Añadir clase body para Home /
add_filter(body_class, function(classes) {
if ( is_front_page() ) {
classes[] = home-custom-header
}
return classes
})
Luego en el Personalizador o en un snippet CSS:
.home-custom-header header.site-header {
background: #0a8f6a
}
Casos concretos y snippets útiles
1) Reducir altura al hacer scroll
Efecto: header más alto al cargar, se reduce al hacer scroll. Puedes combinar CSS y un poco de JS, pero aquí hay una versión CSS-only que aprovecha una clase que añadiremos mediante snippet PHP/JS si se desea. Alternativamente usa solo CSS con position:sticky y media queries.
2) Cambiar color del menú al pasar el ratón (hover) y en foco (accesibilidad)
.main-navigation a {
color: #ffffff
transition: color 0.15s ease, background-color 0.15s ease
}
.main-navigation a:hover,
.main-navigation a:focus {
color: #ffd54a
outline: 2px solid #ffd54a
outline-offset: 2px
}
3) Ocultar/mostrar elementos según dispositivo
/ Ocultar barra superior en móviles /
@media (max-width: 768px) {
.top-bar { display: none }
}
/ Mostrar botón extra solo en móviles /
@media (max-width: 768px) {
.header-cta { display: inline-block }
}
Problemas comunes y soluciones
- Mi CSS no se aplica:
- Revisa la especificidad: usa selectores más concretos o revisa reglas con !important como último recurso.
- Verifica que no haya caché activo (CDN, plugin de caché, cache del navegador).
- Comprueba que no estés editando el Personalizador de otro sitio (multisite) o un CSS en otro plugin que cargue después.
- Los cambios se rompen en móviles:
- Usa media queries para ajustar tamaños, márgenes y comportamiento del menú.
- Test en varios navegadores y dispositivos o usa las herramientas de dispositivo del inspector.
- El snippet PHP lanza errores:
- Activa WP_DEBUG en staging y revisa el log. Asegúrate de que el snippet esté marcado para ejecutarse en frontend y que la sintaxis PHP sea correcta.
Buenas prácticas de accesibilidad y rendimiento
- Comprueba contraste de color (texto sobre fondo) con herramientas de contraste.
- Conserva el orden semántico: no escondas elementos visuales esenciales a lectores de pantalla.
- Evita imágenes de gran tamaño en el header optimiza y usa formatos modernos (WebP) si procede.
- No inyectes excesivo CSS inline que impida la caché adecuada prefiere wp_add_inline_style asociado a un handle correcto si es posible.
Ejemplo completo: header fijo con reducción al hacer scroll (JS opcional)
Si deseas un header que cambie clase cuando el usuario hace scroll, añade este snippet JS (puede ponerse con un plugin que permita JS o en un fragmento PHP que imprima el script). A continuación ejemplo de CSS y el script embed en un snippet PHP.
/ Snippet combinado: Añadir script que gestiona la clase scrolled al header /
add_action(wp_footer, function() {
?>
Resumen rápido (tabla)
| Método | Ventajas | Desventajas |
| Personalizador – CSS adicional | Rápido, seguro, en vivo | Puede perder prioridad frente a reglas muy específicas del tema |
| Plugin Snippets (PHP/JS) | Flexible, permite lógica condicional, reutilizable | Requiere conocer un poco PHP/JS cuidado con errores |
| Child theme | Control total, ideal para cambios permanentes | Requiere FTP/administración de archivos |
Últimas recomendaciones
- Prueba cambios en un entorno de staging antes de aplicar en producción.
- Documenta cada snippet con título y descripción (Code Snippets permite esto) para poder desactivarlo o modificarlo fácilmente.
- Si el tema recibe actualizaciones frecuentes y el header requiere muchas personalizaciones, considera crear un child theme para centralizar cambios más complejos.
Fin del tutorial
Este artículo proporciona ejemplos prácticos y seguros para personalizar el header de WordPress desde el Personalizador y mediante plugins de fragmentos. Ajusta selectores y valores a tu tema y diseño. Éxitos con tus modificaciones.
Leave a Reply