8 min de lecturabuscador woocommerceWooCommerceerratasbúsqueda interna

«figrua» devuelve cero: el buscador de WooCommerce y las faltas de ortografía

18 productos con «figura», cero con «figrua». Medido hoy en una tienda real de 1.473 productos, donde en 47 días 131 palabras se escribieron mal en 254 búsquedas. Aquí está cómo encontrar las tuyas y qué puedes arreglar hoy.

Abre tu tienda y haz esto. Tarda quince segundos.

Busca una palabra tuya, de las que salen en varios productos. Ahora búscala otra vez cambiando dos letras de sitio, como cuando escribes rápido en el móvil.

Esto es lo que me ha devuelto hoy, 25 de agosto de 2026, una tienda WooCommerce real de coleccionismo:

Búsqueda Productos
figura 18
figrua 0
vegeta 18
vegueta 0
attack 17
atack 0

Una letra. Esa es toda la diferencia entre un escaparate y una página que dice «no se han encontrado productos».

Qué hace WooCommerce exactamente

No es un bug, y conviene entenderlo antes de ir a buscar culpables: WooCommerce hace exactamente lo que dice hacer.

Cuando alguien busca, WordPress parte la frase en palabras y exige que cada una aparezca, letra por letra, dentro del título, el extracto o la descripción de un producto. En SQL es esto, más o menos:

WHERE (post_title LIKE '%figrua%' OR post_content LIKE '%figrua%')
  AND (post_title LIKE '%one%'    OR post_content LIKE '%one%')

figrua no aparece en ninguna parte de tu catálogo, porque tú nunca lo escribiste mal. Así que la condición no se cumple nunca y el resultado es cero. Da igual que tengas cincuenta figuras: la comparación es de cadenas, no de significado.

Esto tiene una consecuencia útil que casi nadie nota: las palabras a medias sí funcionan. Si alguien escribe narut mientras teclea, LIKE '%narut%' encuentra «Naruto» sin problema, porque es una subcadena. El buscador nativo aguanta bien que escribas poco. Lo que no aguanta es que escribas mal.

Y una letra de más, una de menos o dos cambiadas de sitio no es «escribir poco». Es otra palabra.

Cuánto pasa esto de verdad

Aquí es donde suele empezar la discusión: ya, pero eso pasará una vez al mes. Lo he medido.

Estos son 34.399 búsquedas reales de esa misma tienda, con 1.473 productos activos, entre el 10 de julio y el 25 de agosto de 2026 — 47 días.

Cogí las 500 consultas más buscadas, que son 15.121 búsquedas (el 44 % del total), y simulé contra el catálogo el emparejamiento literal que hace WordPress. El resultado: 60 de esas 500 consultas devolverían cero, y son 1.385 búsquedas, el 9,2 %.

Ese 9,2 % son varias cosas mezcladas —marcas que la tienda no vende, siglas, frases— y no todo es una errata. Así que fui a por las erratas puras, las que son inequívocamente una palabra tuya escrita mal:

131 palabras distintas escritas mal, en 254 búsquedas.

Es un suelo, no un techo: solo cuenta palabras que no aparecen en ningún producto, ni siquiera como parte de otra, y que se parecen mucho a una que sí. Y aun así, un puñado de ejemplos:

Escrito Debería ser Veces
atack attack 35
ichibanso ichibansho 16
chuuya chuya 10
krilin krillin 9
lufy luffy 8
bleacj bleach 8

El detalle que no me esperaba

Las dos erratas más repetidas de toda la tienda no están en esa tabla. Y el motivo es lo más interesante del asunto.

Son estas:

Escrito Debería ser Veces Buscador nativo
figrua one piece figura one piece 73 0 resultados
vegueta vegeta 49 0 resultados

Setenta y tres personas escribieron figrua. No es un nombre japonés difícil: es la palabra «figura», con la r y la u intercambiadas. El error de tecleo más humano que existe.

No están en la tabla anterior porque el método con el que se detectan erratas casi siempre —comparar trigramas, los grupos de tres letras seguidas— es malísimo justo con las transposiciones. «figura» se parte en fig, igu, gur, ura. «figrua» se parte en fig, igr, gru, rua. Comparten uno. Para un corrector de trigramas son dos palabras distintas.

Así que la errata más frecuente del mundo real es también la que peor detecta la corrección difusa más habitual. Si tu plugin de búsqueda «tolera erratas», merece la pena que compruebes esta en concreto antes de fiarte.

Cómo encontrar las tuyas

Lo incómodo de todo esto es que WooCommerce no guarda las búsquedas. Ni el término, ni cuántos resultados devolvió. Esa información pasa por tu servidor y se tira.

Se arregla con veinte líneas. Guarda esto como wp-content/mu-plugins/registro-busquedas.php — la carpeta mu-plugins la puedes crear si no existe, y lo que hay dentro se activa solo:

<?php
/**
 * Plugin Name: Registro de búsquedas
 * Description: Guarda cada búsqueda de la tienda y cuántos resultados devolvió.
 */

add_action('wp', function () {
    if (is_admin() || !is_search() || !is_main_query()) {
        return;
    }

    $termino = trim(get_search_query());
    if ($termino === '') {
        return;
    }

    global $wp_query, $wpdb;
    $tabla = $wpdb->prefix . 'busquedas';

    // La tabla se crea una sola vez, no en cada búsqueda.
    if (get_option('registro_busquedas_tabla') !== '1') {
        $wpdb->query("CREATE TABLE IF NOT EXISTS {$tabla} (
            id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            termino VARCHAR(191) NOT NULL,
            resultados INT NOT NULL,
            creado DATETIME NOT NULL,
            INDEX idx_termino (termino),
            INDEX idx_creado (creado)
        ) {$wpdb->get_charset_collate()}");
        update_option('registro_busquedas_tabla', '1');
    }

    $wpdb->insert($tabla, [
        'termino'    => mb_substr($termino, 0, 191),
        'resultados' => (int) $wp_query->found_posts,
        'creado'     => current_time('mysql'),
    ]);
});

Déjalo una semana. Después, la consulta que importa:

SELECT termino, COUNT(*) AS veces
FROM wp_busquedas
WHERE resultados = 0
GROUP BY termino
ORDER BY veces DESC
LIMIT 50;

(Cambia wp_ por el prefijo de tus tablas si lo tienes distinto.)

Si tienes WP-CLI, es una línea desde el servidor:

wp db query "SELECT termino, COUNT(*) veces FROM wp_busquedas WHERE resultados=0 GROUP BY termino ORDER BY veces DESC LIMIT 50" --skip-column-names

Esa lista es, con diferencia, el documento más rentable de tu tienda. Cada línea es alguien que te dijo qué quería comprar y se fue con las manos vacías. Y solo hay tres explicaciones, las tres accionables: no lo tienes (ya sabes qué comprar), lo tienes con otro nombre (un sinónimo lo arregla) o lo escribió mal (esto).

Qué puedes arreglar hoy, gratis

Cuando tengas tus veinte o treinta erratas más frecuentes, corrígelas a mano. En mu-plugins, otro archivo:

<?php
/**
 * Plugin Name: Correcciones de búsqueda
 * Description: Sustituye erratas frecuentes antes de buscar.
 */

add_action('pre_get_posts', function ($query) {
    if (is_admin() || !$query->is_search() || !$query->is_main_query()) {
        return;
    }

    // Tu lista, sacada de la consulta de arriba: mal escrito => bien escrito.
    $correcciones = [
        'figrua'  => 'figura',
        'vegueta' => 'vegeta',
        'atack'   => 'attack',
        'lufy'    => 'luffy',
        'krilin'  => 'krillin',
    ];

    $palabras = preg_split('/\s+/', mb_strtolower($query->get('s')), -1, PREG_SPLIT_NO_EMPTY);
    if (!$palabras) {
        return;
    }

    $cambiado = false;
    foreach ($palabras as $i => $palabra) {
        if (isset($correcciones[$palabra])) {
            $palabras[$i] = $correcciones[$palabra];
            $cambiado = true;
        }
    }

    if ($cambiado) {
        $query->set('s', implode(' ', $palabras));
    }
});

Cinco minutos, cero euros, y recuperas las búsquedas que más se repiten. Si tu tienda es pequeña y tus nombres de producto son palabras normales, con esto probablemente vas servido.

Dónde deja de valer

Tiene un límite y es honesto decirlo: 131 palabras distintas en 47 días, en una sola tienda. Un mapa escrito a mano no va a seguir ese ritmo, y cada producto nuevo trae nombres nuevos que la gente escribirá mal de maneras que aún no conoces.

A partir de ahí hace falta que la corrección sea automática, y ahí es donde la cosa se pone técnica de verdad, porque un solo método no basta:

  • Difusa por trigramas (pg_trgm en Postgres, por ejemplo) resuelve las letras cambiadas, sobradas o faltantes. Es lo que casi todos los plugins llaman «tolerancia a erratas».
  • Pero falla con las transposiciones, que como acabamos de ver son las más frecuentes. Ahí hace falta comparar de otra manera: distancia de edición, o directamente entender la palabra en vez de compararla.
  • Y no arregla el otro problema, el de vocabulario: alguien escribe «sudadera» y tú pusiste «hoodie». Eso no es una errata, es otro idioma. Se resuelve con sinónimos o con búsqueda semántica.

Lo que funciona es lanzar las tres a la vez —literal, difusa y semántica— y fusionar los resultados, en vez de elegir una y rezar. Que es lo que hace un buscador dedicado y lo que no va a hacer nunca un LIKE '%figrua%'.


Por orden, lo que yo haría esta semana:

  1. La prueba de quince segundos. Una palabra tuya, bien y mal escrita. Si sale 18 contra 0, ya sabes que el problema existe en tu tienda.
  2. Pega el registro de búsquedas. Es lo que convierte esto en un número tuyo en vez de una intuición.
  3. A los siete días, mira la lista de ceros. Va a doler y va a ser útil.
  4. Corrige a mano las diez más repetidas. Es la mejor relación esfuerzo/dinero que hay en un ecommerce.
  5. Si la lista crece más rápido de lo que la mantienes, es la señal de que toca un buscador que lo haga solo.

Si estás en ese último punto, tenemos la guía completa de cómo elegir un buscador para ecommerce, con los precios de cada opción comprobados y una sección sobre cuándo cada competidor es mejor que nosotros. Y si lo que quieres es ponerle euros al agujero, está cuánto te cuesta el buscador de tu ecommerce, con los datos de pedidos de esta misma tienda.

¿Tu tienda pierde ventas por búsquedas que no encuentran nada?

WildRock añade a tu WooCommerce un buscador que entiende lo que tus clientes quieren decir, y te dice en euros cuánto te está generando. Plugin gratuito, sin tocar código.