Función para ocultar Google reCAPTCHA en Contact Form 7

Logo de Google reCAPTCHA

Con el lanzamiento de la versión 5.1 de Contact Form 7, los desarrolladores del plugin dejaron de utilizar la API de reCAPTCHA v2 y la sustituyeron por la v3. En la segunda versión de esta herramienta de Google, destinada a proteger del spam, se muestra una casilla de verificación con la leyenda «No soy un robot». En la tercera, sin embargo, no es necesaria la intervención del usuario, ya que la aplicación se encarga de comprobar si se trata o no de un bot, a través de un sistema de puntuaciones.

El problema de Google reCAPTCHA v3 es que es muy intrusivo, porque, una vez implementado, su logo aparece en la esquina inferior derecha de todas las páginas de tu web. A mí esto no me hace ni pizca de gracia. Lo considero excesivo, aparte de que la imagen ocupa justo el mismo espacio que el botón de volver arriba, de modo que prefiero ocultarla, excepto en la página en la que tengo el formulario de contacto, donde sí me parece razonable su inclusión.

En el soporte de Contact Form 7 se ofrece como solución un código CSS, para que el captcha sea invisible en todas las páginas. No te da opción, por tanto, de mantenerlo en algunas:

.grecaptcha-badge { visibility: hidden; }

 
Otra alternativa es el plugin CF7 Invisible reCAPTCHA, pero a mayor número de plugins más se va a ralentizar la velocidad de carga de tu web y eso no es nada bueno para el SEO. Así es que conviene evitar todos los que sea posible, mediante el uso de códigos.

En este artículo, te propongo una función para el fichero functions.php de tu tema, que oculta la tercera versión de reCAPTCHA en Contact Form 7. Tiene un condicional «if» con la URL de la página donde quieras que el captcha sea visible. En mi sitio esa URL es «contactar».

/* Ocultar reCAPTCHA */
function ocultar_recaptcha() {
if ( is_page( 'contactar' ) ) {
   return;
}
remove_action( 'wp_enqueue_scripts', 'wpcf7_do_enqueue_scripts' );
remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts' );
}
add_action( 'wp_enqueue_scripts', 'ocultar_recaptcha', 1 );

 
Quizá sean varias y no sólo una las páginas donde desees que aparezca el logo de reCAPTCHA v3. A mí me sucede en una web multilenguaje, cuyo formulario de contacto está disponible en español, portugués e inglés. En este caso, agrego las correspondientes URLs y un array hace el resto.

/* Ocultar reCAPTCHA */
function ocultar_recaptcha() {
if ( is_page( array( 'contactar', 'contactos', 'contact' ) ) ) {
   return;
}
remove_action( 'wp_enqueue_scripts', 'wpcf7_do_enqueue_scripts' );
remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts' );
}
add_action( 'wp_enqueue_scripts', 'ocultar_recaptcha', 1 );