Skip to content
🛡 Protección del checkout de WooCommerce: 2 formas de añadir CAPTCHA en 15 minutos

🛡 Protección del checkout de WooCommerce: 2 formas de añadir CAPTCHA en 15 minutos

Pedidos spam, bots en el carrito y registros falsos: toda tienda WooCommerce pasa por esto. Nadie quiere limpiar manualmente la base de datos de pedidos basura, y cada décimo lead generado por un bot es tiempo y dinero perdidos.

CAPTCHA resuelve el problema con 10 minutos de configuración. Sin plugins inflados todo en uno, sin modificar el núcleo.

A continuación, dos formas funcionales de añadir verificación al checkout: mediante un plugin gratuito y mediante código en functions.php. Además, un extra: proteger la página de inicio de sesión en los mismos 5 minutos.

Qué es CAPTCHA y por qué lo necesita en el checkout

💡 Resumen rápido:

  • Qué es CAPTCHA y qué tipos existen, breve, sin teoría por la teoría
  • Dos métodos de instalación: mediante el plugin gratuito reCAPTCHA for WooCommerce y mediante código
  • Extra: CAPTCHA en la página de inicio de sesión del administrador, protección contra fuerza bruta
  • Errores comunes de configuración y cómo evitarlos

CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) es una prueba que distingue a un visitante real de un bot. El usuario marca la casilla «No soy un robot», resuelve una imagen o un puzle sencillo, y solo entonces se envía el formulario. Un bot no puede superar esto: necesita entender una tarea para la que no fue entrenado.

Para una tienda WooCommerce, el CAPTCHA en el checkout no es un lujo, es una necesidad. Los bots de spam pueden rellenar los campos del formulario de pedido y hacer clic en «Enviar»: el propietario recibe decenas de pedidos vacíos que se acumulan en el panel de administración y saturan el CRM. Caso real: tras activar reCAPTCHA en un sitio de prueba, el número de pedidos falsos se redujo a cero en 24 horas, sin filtros, sin bloqueos de IP, sin ediciones en .htaccess.

Seis tipos principales de CAPTCHA: basado en texto (letras y números distorsionados), audio (para usuarios con discapacidad visual), matemático (problemas simples como «3 + 4»), basado en imágenes (seleccionar todas las imágenes con un semáforo), puzle (arrastrar una pieza a su lugar) e invisible (reCAPTCHA v3, funciona en segundo plano, analiza el comportamiento del usuario). Para una tienda, reCAPTCHA v2 (casilla de verificación) o v3 invisible funciona mejor: no molestan a los clientes y bloquean a la gran mayoría de los bots.

Resumen de plugins: qué instalar en WooCommerce

Hay tres plugins principales en el mercado que cubren esta tarea. Analicemos brevemente cuál se adapta a cada escenario.

ReCAPTCHA for WooCommerce (RelyWP)

Gratuito, sin versión premium de ningún tipo. Compatible con reCAPTCHA v2 en las páginas de checkout, inicio de sesión, registro y restablecimiento de contraseña. Más de 40 000 instalaciones activas, valoración de 4,5 en WordPress.org. Se instala en un minuto: claves API de Google → marque las casillas de los formularios → listo. Inconveniente: solo v2, sin compatibilidad con v3. Si necesita verificación invisible, considere las alternativas.

Advanced Google reCAPTCHA (WebFactory)

Más de 200 000 instalaciones, valoración de 4,8 en WordPress.org. Cubre el checkout de WooCommerce, Easy Digital Downloads, BuddyPress y los formularios estándar de WordPress. Compatible con v2 y v3, con una alternativa de CAPTCHA matemático. La versión gratuita cubre el 90% de las necesidades; la versión PRO añade bloqueo por país. Matices: la interfaz requiere acostumbrarse (pestañas con diseño antiguo) y las reseñas mencionan ocasionalmente conflictos con temas personalizados.

ReCaptcha by BestWebSoft

Versión gratuita + premium por 24 $ al año. Modos v2, v3 y enterprise. Ajustes de tamaño y ubicación del widget, multilingüe, compatible con escritura RTL. Inconveniente: vinculado a los servicios de Google, lo que puede ser crítico para proyectos sensibles al RGPD. Pero como herramienta de trabajo, es fiable y está probada en docenas de proyectos reales.

Método 1: CAPTCHA mediante plugin (sin código)

El camino más sencillo. Usamos reCAPTCHA for WooCommerce, es gratuito, ligero y no requiere complicaciones.

Paso 1: Instalación y activación

Vaya al administrador de WordPress: Plugins → Añadir nuevo. Escriba recaptcha for woo en la barra de búsqueda.

Lo encontró, haga clic en Instalar ahora, espere un par de segundos y active.

Tras la activación, aparecerá un elemento reCAPTCHA WooCommerce en el menú Ajustes.

Paso 2: Claves de la API de Google

Vaya a la página de creación de claves reCAPTCHA. Complete:

  • Etiqueta, cualquier nombre (por ejemplo, «Mi tienda»)
  • Tipo de reCAPTCHA, v2 (Casilla «No soy un robot»)
  • Dominios, el dominio de su tienda sin https://

Haga clic en Enviar y el sistema le proporcionará una Clave del sitio y una Clave secreta.

Paso 3: Configuración del plugin

Copie las claves y péguelas en los campos del plugin: Ajustes → reCAPTCHA WooCommerce.

Desplácese hacia abajo hasta la sección Formularios de WooCommerce. Marque la casilla de Finalizar compra en WooCommerce (y las de Inicio de sesión/Registro si desea proteger el acceso).

Guarde los cambios.

Paso 4: Verificación

En la misma página de ajustes encontrará un botón Probar respuesta de la API. Haga clic en él y, si las claves son correctas, verá un estado verde.

Listo. Ahora aparecerá un captcha en la página de finalizar compra antes del botón «Realizar pedido». Pruébelo en modo incógnito; la verificación de bots debería mostrarse.

Método 2: CAPTCHA mediante código (sin plugins adicionales)

Si no desea instalar otro plugin, aquí tiene un fragmento de código que añade reCAPTCHA a la finalización de compra a través de functions.php.

Paso 1: Preparación

Antes de editar cualquier código, haga una copia de seguridad completa del sitio. Editaremos el archivo functions.php de su tema hijo o usaremos el plugin Code Snippets, que es más seguro: un error de código no tirará el sitio, el snippet simplemente se desactivará.

Paso 2: El código

A continuación tiene dos funciones PHP. La primera muestra el widget de reCAPTCHA en el checkout, la segunda verifica la respuesta de Google cuando se envía el pedido.

1/**
2 * Display reCAPTCHA on the WooCommerce checkout page
3 */
4function doublee_show_me_the_checkout_captcha($checkout) {
5 echo '<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>';
6}
7add_action('woocommerce_checkout_order_review', 'doublee_show_me_the_checkout_captcha', 18);
8
9/**
10 * Verify reCAPTCHA response during checkout
11 */
12function doublee_process_recaptcha() {
13 $postdata = $_POST['g-recaptcha-response'];
14 $verified_recaptcha = file_get_contents(
15 'https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=' . $postdata
16 );
17 $response = json_decode($verified_recaptcha);
18 if (!$response->success) {
19 wc_add_notice('Please verify that you are not a robot', 'error');
20 }
21}
22add_action('woocommerce_checkout_process', 'doublee_process_recaptcha');

Qué está pasando aquí:

  • woocommerce_checkout_order_review, un hook que se dispara cuando se renderiza el bloque del pedido en el checkout. Nos enganchamos a él para imprimir un <div> con un atributo data-sitekey (esa es la Site Key de la consola de Google).
  • woocommerce_checkout_process, un hook de validación que se dispara al enviar el pedido. La función envía la respuesta del captcha al servidor de Google a través del endpoint siteverify, decodifica el JSON, y si la verificación falla, añade un error usando wc_add_notice(), el mecanismo estándar de WooCommerce.
  • Si allow_url_fopen está deshabilitado en su hosting (la función file_get_contents no funcionará para URLs), sustitúyala por wp_remote_get(), que funciona vía cURL y no depende de php.ini.

Paso 3: Insertar y probar

Añada el código mediante Code Snippets o en el functions.php de su tema hijo, y guarde.

Después de guardar, visite la página de checkout en modo incógnito; el widget de reCAPTCHA debería aparecer. Intente enviar un pedido sin marcar la casilla: obtendrá un error de «Por favor, verifique que no es un robot».

Extra: CAPTCHA en la página de inicio de sesión

El checkout no es el único punto débil. Los ataques de fuerza bruta contra /wp-login.php y /my-account/ ocurren sin parar, incluso en tiendas pequeñas. El mismo plugin reCAPTCHA for WooCommerce protege el formulario de inicio de sesión en un par de clics.

Vaya a Ajustes → reCAPTCHA WooCommerce, la sección WooCommerce Forms, y active Login:

Guarde, y /my-account/ queda protegido. Si también necesita proteger /wp-login.php, este mismo plugin soporta formularios de WordPress: misma lógica, solo marque WordPress Login Form.

Problemas típicos y cómo resolverlos

  • El CAPTCHA no aparece en el checkout. Revise sus claves: la Site Key y la Secret Key deben ser de la v2 (casilla «No soy un robot»), no de la v3. Si la versión no coincide, el widget simplemente no se mostrará.
  • El CAPTCHA se muestra dos veces. Lo más probable es que tenga dos plugins de reCAPTCHA activos al mismo tiempo (por ejemplo, uno en el tema y otro por separado). Desactive el duplicado.
  • Error de «clave no válida» durante la prueba de la API. O hay un error tipográfico al copiar las claves, o las claves se crearon para un dominio diferente. Regenere las claves y verifique el dominio en la consola de Google.
  • Conflicto con una plantilla de checkout personalizada. Cambie al tema predeterminado (Storefront) y compruebe: si el CAPTCHA aparece, el problema está en los hooks de su tema. Solución: un hook personalizado en código (Método 2) vinculado a su plantilla.
  • El checkout no carga después de activar el CAPTCHA. Limpie la caché (plugin + navegador), desactive la minificación de JS durante la prueba; los conflictos suelen deberse a una optimización agresiva de scripts.
  • Los clientes se quejan de que el CAPTCHA rechaza a personas reales. Reduzca la sensibilidad en los ajustes de reCAPTCHA o cambie a la casilla v2; es más amable que la v3 y no bloquea basándose en un modelo de comportamiento «sospechoso».

⁉️🤔 Preguntas frecuentes

¿Es necesario el CAPTCHA en el checkout si ya tengo instalado un plugin antispam?

Plugins antispam como Akismet protegen los comentarios y los formularios de contacto, pero no el checkout de WooCommerce. Los bots que realizan pedidos falsos eluden los filtros estándar; no necesitan campos de comentarios, rellenan directamente el formulario de pedido. El CAPTCHA cubre esa brecha.

¿Qué versión de reCAPTCHA debería elegir, v2 o v3?

Para una tienda, recomendamos la casilla v2: el visitante marca una casilla y el pedido se procesa. La v3 funciona en segundo plano y puede bloquear a un cliente real si su modelo de comportamiento le parece «sospechoso» al sistema, y en el checkout cada cliente cuenta.

¿Puedo proteger con CAPTCHA solo el checkout de invitados y dejar pasar a los usuarios registrados?

Sí. En el plugin reCAPTCHA for WooCommerce, la casilla WooCommerce Checkout activa el CAPTCHA para todos. Para dejar pasar a los usuarios registrados, necesitará añadir una condición en código (Método 2): envuelva el hook en if (!is_user_logged_in()). Sin código, solo con plugins que tengan lógica condicional, como Advanced Google reCAPTCHA PRO.

¿Afecta el CAPTCHA a la velocidad de carga del checkout?

De forma apreciable, no. El script de reCAPTCHA se carga de forma asíncrona y solo en las páginas donde se muestra realmente el formulario. No supone una carga adicional para todo el sitio. En la práctica, la diferencia de velocidad del checkout antes y después está entre 100 y 200 ms.

Resumen

Añadir CAPTCHA al checkout de WooCommerce es una tarea de 15 minutos, y el efecto es limpio. Sin pedidos spam, sin limpieza manual de la base de datos, sin bots en el embudo.

Si no quiere instalar plugins adicionales, use el segundo método con código. Añade exactamente dos funciones a functions.php y no requiere actualizaciones. Si prefiere un enfoque de «configurar y olvidarse», reCAPTCHA for WooCommerce: gratuito, 40 mil instalaciones, actualizaciones en vivo y soporte para Block Checkout de serie.

Verifique que el CAPTCHA funciona en todos los dispositivos: abra el checkout desde un teléfono y desde un ordenador en modo incógnito. Si el widget se desplaza en el móvil, ajuste el contenedor CSS o cambie el tamaño del widget a Compacto en la consola de Google reCAPTCHA. Cinco minutos de pruebas ahora le ahorrarán horas de limpieza de pedidos spam después.