Tutorial WordPress: Cómo personalizar el header con CSS desde el Personalizador y un plugin de fragmentos

·

·

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

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

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

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

  1. 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.
  2. 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.
  3. 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

Your email address will not be published. Required fields are marked *