Introducción
Personalizar la página de resultados de búsqueda en WordPress con CSS permite mejorar la experiencia del usuario, reforzar la identidad visual de tu sitio y aumentar la claridad al presentar coincidencias. Este artículo ofrece una guía completa: desde la identificación de selectores relevantes y estructura de plantilla, hasta ejemplos prácticos de CSS y snippets PHP para mejorar la presentación y accesibilidad.
Requisitos previos
- Tener acceso al tema activo (mejor aún, usar un child theme).
- Conocimientos básicos de CSS y nociones básicas de PHP para cambios puntuales en plantillas.
- Editor para modificar archivos del tema: editor de código, SFTP o el editor del tema en el administrador de WP (con precaución).
Anatomía de la página de búsqueda en WordPress
WordPress usa, por defecto, la plantilla search.php. Si no existe, caerá en index.php o en la jerarquía del tema. La estructura típica dentro del loop contiene:
- Título del resultado (generalmente un enlace a la entrada).
- Metadatos (autor, fecha, taxonomías).
- Extracto o contenido parcial.
- Miniatura (thumbnail) si el tema la ofrece.
Además, WordPress agrega clases útiles al body como search y a veces search-results si el tema las define. Muchos temas también encierran cada resultado en un elemento con clase entry, post o search-result. Identificar las clases del tema es el primer paso: usa las herramientas de desarrollo del navegador (Inspector).
Selectores y convenciones útiles
A continuación una tabla con selectores comunes que puedes encontrar ajusta nombres según tu tema.
| Selector | Uso típico |
|---|---|
| body.search | Aplica estilos solo en páginas de resultados de búsqueda. |
| .search-results o .search-list | Contenedor principal de la lista de resultados. |
| .search-result / .entry / .post | Cada elemento resultado. Ideal para separación y hover. |
| .search-result .entry-title | Título enlazado de cada resultado. |
| .search-result .entry-meta | Metadatos: autor, fecha, categoria. |
| .search-result .entry-excerpt | Extracto o fragmento que muestra coincidencias. |
Flujo recomendado para aplicar cambios
- Crear un child theme o usar un plugin de CSS personalizado para evitar perder cambios con actualizaciones del tema.
- Identificar selectores con las herramientas del navegador.
- Crear/editar un archivo CSS dedicado para estilos de búsqueda y encolarlo correctamente (o añadirlo al CSS adicional del tema).
- Probar en escritorio y móvil, comprobar contraste y accesibilidad.
- Optimizar: evitar reglas costosas y usar selectores concretos.
Ejemplos prácticos de CSS
Ejemplo 1: Sobresalir la lista de resultados con un layout en tarjeta (grid ligero) y mejorar la legibilidad.
/ Aplica solo en páginas de búsqueda /
body.search .search-results {
display: grid
grid-template-columns: 1fr
gap: 1.25rem
margin: 0 auto
max-width: 1100px
padding: 1rem
}
/ Cada resultado como tarjeta /
body.search .search-result {
display: flex
gap: 1rem
align-items: flex-start
padding: 1rem
border-radius: 8px
background: #ffffff
box-shadow: 0 1px 3px rgba(0,0,0,0.06)
transition: transform 180ms ease, box-shadow 180ms ease
}
/ Hover táctil/ratón /
body.search .search-result:hover {
transform: translateY(-3px)
box-shadow: 0 6px 18px rgba(0,0,0,0.08)
}
/ Miniatura (ajusta selector al del tema) /
body.search .search-result .post-thumbnail img {
width: 120px
height: 80px
object-fit: cover
border-radius: 6px
}
/ Contenido principal /
body.search .search-result .entry-content {
flex: 1
}
/ Título /
body.search .search-result .entry-title a {
color: #0b5cff
text-decoration: none
font-size: 1.125rem
font-weight: 600
}
/ Metadatos /
body.search .search-result .entry-meta {
color: #6b7280
font-size: 0.875rem
margin-top: 0.35rem
}
/ Extracto /
body.search .search-result .entry-excerpt {
margin-top: 0.5rem
color: #374151
line-height: 1.5
}
/ Adaptación móvil: una columna, miniaturas más pequeñas /
@media (max-width: 720px) {
body.search .search-result {
flex-direction: column
}
body.search .search-result .post-thumbnail img {
width: 100%
height: auto
}
}
Ejemplo 2: Resaltar palabras buscadas (visual mediante etiqueta mark)
Si el servidor/PHP envuelve las coincidencias en ltmarkgt, con CSS puedes darles un estilo específico y accesible.
/ Estilo para términos resaltados /
body.search mark,
body.search .search-highlight {
background: linear-gradient(90deg, #fff69b, #ffd166)
color: #111827
padding: 0.08rem 0.18rem
border-radius: 3px
font-weight: 600
box-shadow: inset 0 -2px 0 rgba(0,0,0,0.06)
}
Cómo envolver términos buscados en ltmarkgt (snippet PHP)
Un método robusto es filtrar el título y el extracto para envolver las coincidencias de la query en una etiqueta ltmarkgt. Añádelo en el archivo functions.php del child theme.
/ Resalta términos de búsqueda en títulos y extractos /
function mi_resaltar_terminos_busqueda( text ) {
if ( is_search() ! empty( get_search_query() ) ) {
keywords = array_map( preg_quote, explode( , trim( get_search_query() ) ) )
if ( ! empty( keywords ) ) {
pattern = /( . implode( , keywords ) . )/i
text = preg_replace( pattern, 1, text )
}
}
return text
}
add_filter( the_title, mi_resaltar_terminos_busqueda, 10, 1 )
add_filter( the_excerpt, mi_resaltar_terminos_busqueda, 10, 1 )
Encolar tu hoja de estilos para la búsqueda
Si creas un archivo CSS dedicado (por ejemplo, search-style.css) en tu child theme, encolarlo correctamente evita problemas de carga.
/ Encolar CSS personalizado para la página de búsqueda /
function mi_enqueue_search_styles() {
if ( is_search() ) {
wp_enqueue_style( mi-search-style, get_stylesheet_directory_uri() . /css/search-style.css, array(), 1.0 )
}
}
add_action( wp_enqueue_scripts, mi_enqueue_search_styles )
Accesibilidad y contraste
- Comprueba el contraste entre el fondo y el texto (términos resaltados incluidos). Usa herramientas como la extensión Axe o contrast checkers online.
- Asegura foco visible en enlaces: :focus debe mostrar un outline claro.
- Evita dependencias solo en color usa iconos o texto adicional cuando el color sea la única señal.
- Si usas roles ARIA, asegúrate de no romper la semántica del resultado (usa ltarticlegt para cada resultado cuando el tema lo permita).
Optimización y buenas prácticas
- Evita selectores muy generales que afecten al resto del sitio. Prefiere body.search como scope principal.
- Mantén el CSS modular: crea un archivo dedicado a búsqueda para facilitar mantenimiento.
- Prueba con diferentes tamaños de texto y longitudes de extracto (temas y plugins pueden cambiar la longitud).
- No uses imágenes de gran tamaño en miniaturas define dimensiones y object-fit para evitar reflows.
Problemas comunes y soluciones
- Los estilos no se aplican: comprueba que no haya reglas más específicas o que el CSS se esté encolando después del CSS del tema. Aumenta la especificidad o usa !important solo como último recurso.
- No aparece la clase body.search: WordPress añade la clase automáticamente en is_search() si tu tema no la usa en la plantilla, envuelve tus reglas en un selector alternativo (por ejemplo, el contenedor principal de la plantilla de búsqueda).
- Resaltado descontrolado: cuida las expresiones regulares en PHP para evitar romper HTML la función anterior es simple y puede mejorarse para evitar marcar dentro de etiquetas.
Checklist final antes de publicar
- Hacer respaldo del tema o trabajar en child theme.
- Probar la página de búsqueda con términos cortos y largos, mayúsculas/minúsculas y caracteres especiales.
- Validar accesibilidad y responsive en varios dispositivos.
- Comprobar rendimiento y evitar cargar recursos innecesarios en páginas no relacionadas.
Conclusión
Con pequeños cambios de CSS y, si es necesario, un par de snippets PHP, puedes transformar la página de resultados de búsqueda en una experiencia más clara, consistente y visualmente atractiva. Utiliza body.search como scope, prueba en distintos dispositivos y mantén la accesibilidad como prioridad. Implementa los ejemplos anteriores adaptándolos al marcado y clases de tu tema para obtener los mejores resultados.
Leave a Reply