Tras las últimas actualizaciones de Contact Form 7, multitud de usuarios han experimentado problemas a la hora de enviar formularios de contacto.

El error es bastante grave puesto que muchas veces el propietario de la web sólo es consciente del fallo cuando los clientes le informan de que no pueden enviar formularios a través de la web.

Según indica el propio diseñador del plugin Contact Form 7, los mensajes de error debidos a problemas con SPAM se indican en un marco naranja. El problema es que, como el mensaje no indica nada acerca de SPAM, el usuario de la web no sabe a qué se debe el error.

¿Cómo solucionar el problema al enviar correos con reCAPTCHA v3 y Contact Form 7?

Existen varias formas para solventar este problema y que no lleven a tener que desactivar la integración de nuestro formulario con Google reCAPTCHA.

La primera solución recomendada pasa por bajar el nivel de protección de reCAPTCHA para que sea menos estricto. De este modo será más fácil que los usuarios no sean considerados SPAM.

La segunda solución pasa por forzar a Contact Form 7 a utilizar la anterior versión de reCAPTCHA v2. Así los usuarios tendrán que validar el captha de forma manual.

 

Solución 1: Bajar el nivel de protección de reCAPTCHA

Esta solución consiste en hacer unos ajustes en el código fuente para que reCAPTCHA sea menos restrictivo. Google reCAPTHA v3 funciona de tal forma que valora cada solicitud de envío de formulario asignándole una nota.  Dependiendo de si la nota es mejor o peor, permitirá enviarlo o no.

El sistema de valoración que utiliza va de 0.0 (muy mala) a 1.0 (muy buena). De esta forma si rellenamos un formulario y reCAPTCHA nos da una nota de 0.3, es más probable que nos arroje el error mientras que si la nota es de 0.9 es muy posible que se pueda enviar sin problemas.

Así es como lo explica Google: “La puntuación oscila entre 0,0 y 1,0 (0,0 indica tráfico abusivo y 1,0, buen tráfico)”

Lo que nosotros vamos a hacer es modificar el código fuente de forma que la “nota de corte” sea más baja, pasando así la validación sin problemas (incluso estando lejos de la nota perfecta 1.0).

El código que tenemos que insertar en el archivo functions.php de nuestra plantilla es el siguiente:

add_filter( ‘wpcf7_recaptcha_verify_response’,

        function( $is_human, $response_body ) {

               $score = isset( $response_body[‘score’] ) ? $response_body[‘score’] : 0;

               $threshold = 0.3;

               $is_human = $threshold < $score;

               return $is_human;

        },

        10, 2

);

En este Código, el valor de la variable $threshold es el que determina la nota de corte.

 

Solución 2: Forzar a Contact Form 7 a usar reCAPTCHA v2

Para esta opción, tendremos que entrar al repositorio de plugins de WordPress y buscar el plugin ReCaptcha v2 for Contact Form 7

Una vez instalado en el menú de Contacto aparecerá la opción “Versión de reCAPTCHA”. Ahí tendremos que seleccionar el uso de reCAPTCHA v2 y como fuente google.com

Ahora podremos ir al apartado de “Integración” y sustituir las claves de la v3 por las claves de reCAPTCHA v2.

De esta forma corregimos el molesto error de Contact Form 7 con reCAPTCHA v3 y seguiremos teniendo nuestro blog o página web libre se SPAM.