Saltar al contenido principal

Search

El diálogo de búsqueda: sugerencias y destacados antes de que nadie escriba

Un botón que abre un diálogo con resultados mientras se escribe, directamente de WooCommerce — sin recargar la página y sin una segunda copia de tu catálogo. Antes de que nadie escriba enseña lo que la tienda haya marcado como destacado.

Sin JavaScript sigue siendo un enlace a la búsqueda del propio sitio, y el formulario de dentro es un GET normal.

Se coloca donde quieras — una cabecera, un menú, una barra lateral. Es un botón, no un componente de catálogo, y por eso tiene pestaña propia.

Sólo el icono

Apaga Show the button label para dejar sólo la lupa. El texto se queda para los lectores de pantalla y el control por voz, así que el botón conserva su nombre — sólo deja de dibujarse.

Adónde lleva «See all results»

A la plantilla de tu catálogo, con un encabezado que dice qué se buscó: La página de resultados.

Encuentra lo que se quiso escribir​

Quien compra no escribe el nombre de un producto como lo escribió la tienda. El buscador lo encuentra igual, sin servicios externos y sin índices que reconstruir:

  • La puntuación y los acentos no cuentan. «tshirt», «t shirt» y «T-Shirt» son la misma palabra, y también «cafe» y «café».
  • Las erratas se perdonan. «hodie», «hoodye» y «hoddy» encuentran Hoodie. Una palabra larga admite más errores que una corta, y una que empieza bien admite uno más: casi nadie se equivoca en las primeras letras.
  • Lo exacto va primero. La búsqueda que perdona sólo entra cuando la exacta no encuentra nada, así que una búsqueda que ya funciona nunca se llena de parecidos.

Compara contra tu propio catálogo, guardado en una caché que se renueva cuando cambia un producto.

La página de resultados también perdona. Con Rescue empty searches encendido —lo está de fábrica, en Fancy Etch → Shop— una búsqueda que no encuentra nada se repite con cada palabra corregida contra las palabras de tus productos, y la barra del catálogo lo dice: «Showing results for “hoodie”. Nothing matched “hodie” exactly». Quien vio tres sudaderas en el diálogo y pulsó «See all results» nunca aterriza en una página vacía, y una búsqueda que encontró algo nunca se cambia.

Detalles bajo cada resultado​

Un viaje necesita su duración y su fecha, un curso su nivel, un vino su año. Result details los pone bajo el nombre de cada resultado, en una fila y con un divisor entre ellos:

Trekking al Cocuy Un día · Dom 30 Ago · Dificultad: Media

Escribe cada detalle en su línea, o sepáralos con ;, y pon cada campo entre signos % con la etiqueta que quieras alrededor:

%dias%; %fecha%; Dificultad: %dificultad%

Cada campo se busca allí donde lo guarde tu tienda, en este orden:

  1. Un atributo del producto — %color% encuentra el atributo global Color (pa_color) o uno escrito en el propio producto.
  2. Una taxonomía del producto — sus términos, separados por comas: %product_brand%.
  3. Un campo de ACF, ya con el formato que tiene configurado, así que una fecha se lee como fecha.
  4. Un campo personalizado — donde guardan los suyos JetEngine, ACPT, Meta Box y casi todos los demás. Usa el nombre del campo, no su etiqueta.

Un detalle con todos sus campos vacíos no se pinta, así que un producto sin dificultad nunca enseña «Dificultad:» sola. Un detalle sin campos —«Envío gratis»— sale siempre.

Por qué % y no llaves

Etch lee todo lo que va entre llaves en una prop como un dato dinámico suyo, así que {dificultad} llegaría vacío antes de que el buscador lo viera.

Sólo se pueden leer los campos escritos en esta prop: el sitio firma esa lista al dibujar la página y el buscador no responde de ningún otro, así que los campos privados de tus productos siguen siendo privados. Hasta ocho campos.

El divisor, su espacio, el tamaño y el color son variables: --fe-woo-search-detail-divider acepta cualquier texto entre comillas —'|', '/', o '' para ninguno— y los lectores de pantalla se lo saltan.

Sus opciones​

El panel de propiedades del buscador

Props

PropTipoPor defectoQué hace
Show while editingsí / noonEl diálogo dibujado abierto en el lienzo, para poder estilarlo: flota sobre la página como lo hará, y nada más se mueve. Apágalo cuando el estilo esté resuelto.
Button labeltextoSearch
Show the button labelsí / noonApagado deja sólo la lupa. El texto se queda para los lectores de pantalla y el control por voz, así que el botón conserva su nombre: sólo deja de dibujarse.
Iconimagenel icono de fábricaLa lupa del botón. Cualquier SVG, de la biblioteca de medios o pegado como URI data:. Sus colores se cambian por el del icono, así que sigue a la paleta.
PlaceholdertextoSearch products…
Search inelección: names, everythingnamesDónde mirar. WooCommerce busca en el nombre y el SKU y en nada más, a propósito; «También las descripciones» añade el extracto y la descripción, que es lo que espera una tienda que escribe qué es una cosa en vez de nombrarla — a costa de una consulta más pesada en un catálogo grande. Las erratas y la puntuación se perdonan igual: «tshirt» encuentra T-Shirt y «hodie» encuentra Hoodie.
Show suggestionssí / noonLa fila de palabras que se ofrece antes de que nadie escriba. Apagada, el diálogo abre sólo con el campo.
Suggestionstexto—Qué palabras ofrecer, separadas por comas. Vacío, ofrece las categorías de la tienda.
Suggestions text → Sizetextovar(--fe-woo-text-m, 0.88rem)
Suggestions text → Colourtextovar(--fe-woo-color, #111827)
Show featured products firstsí / noonLo que tiene que decir un buscador vacío. Apagado, el diálogo espera en silencio a que alguien escriba.
Result detailstexto—Detalles bajo el nombre de cada resultado, uno al lado del otro y con un divisor entre ellos. Escribe uno por línea o sepáralos con «;». Escribe un campo entre signos % y la etiqueta que quieras alrededor — «Dificultad: %dificultad%». Un campo puede ser un atributo del producto, una taxonomía, un campo de ACF o un campo personalizado (JetEngine, ACPT…). Un detalle con todos sus campos vacíos no se pinta.
Size → Icon sizetextovar(--fe-woo-icon-size, 1.5rem)
Size → Dialog widthtexto40rem
Size → Thumbnailtexto3.5rem
Colors → IcontextocurrentColor
Colors → Surfacetextovar(--fe-woo-surface, #ffffff)
Colors → Paneltextovar(--fe-woo-panel, #f6f7f9)La fila bajo el ratón, el marco de la miniatura y el botón que abre la búsqueda.
Colors → Bordertextovar(--fe-woo-border, #e8ebef)
Colors → Accenttextovar(--fe-woo-accent, #111827)El contorno y el tinte que toma una sugerencia al elegirla o al pasar el ratón.

Sus variables propias

VariablePor defectoQué controla
--fe-woo-search-icon-sizevar(--fe-woo-icon-size, 1.5rem)La lupa del botón. Lee --fe-woo-icon-size, el mismo que el carrito y el corazón.
--fe-woo-search-icon-strokevar(--fe-woo-icon-stroke, 2)El grosor de la línea de la lupa. Lee --fe-woo-icon-stroke, el mismo que el carrito y el corazón.
--fe-woo-search-icon-colorvar(--fe-woo-color, #111827)El color del botón que lo abre. El componente escribe currentColor, así que toma el de la cabecera que lo rodea, como el carrito y el contador de la wishlist.
--fe-woo-search-width40remCuánto mide de ancho el diálogo.
--fe-woo-search-photo3.5remLa miniatura de cada resultado.
--fe-woo-search-chip-sizevar(--fe-woo-text-m, 0.88rem)Las sugerencias que se ofrecen antes de que nadie escriba. Salían un paso más grandes que el resto del diálogo — el porqué está anotado en search.css.
--fe-woo-search-chip-colorvar(--fe-woo-search-color, #111827)Y su texto.
--fe-woo-search-detail-sizevar(--fe-woo-text-s, 0.81rem)La fila de detalles bajo el nombre de cada resultado.
--fe-woo-search-detail-colorvar(--fe-woo-search-muted, #6b7280)Su color. Lee el del texto secundario.
--fe-woo-search-detail-divider'·'Lo que va entre dos detalles, entre comillas —'·', '|', '/'— o '' para ninguno. Los lectores de pantalla se lo saltan.
--fe-woo-search-detail-gap0.5remEl espacio a cada lado del divisor.