Cómo usar Google reCaptcha en cualquier Formulario de WordPress (sin plugins)

Wordpress

Google reCaptcha permite, de forma gratuita, introducir un reto en el envío de formularios de cualquier tipo, para detener así a los bots. Esta solución que propongo evita el uso de plugins, para conseguir un resultado, no solo eficaz, sino que maximice la eficiencia y no degrade el rendimiento de WordPress.

  • Tiempo de implementación: 10/15 min
  • Nivel de dificultad: Fácil

Paso 1: Registrar tu sitio en Google reCaptcha

  1. Ve a Google reCaptcha.
  2. Haz clic en el botón de “Admin Console” y accede con tu cuenta de Google.
  3. Haz clic en “+” para registrar un nuevo sitio.
  4. Selecciona “reCAPTCHA v2” y luego “Checkbox”.
  5. Introduce tu dominio en la sección de dominios.
  6. Acepta los términos de servicio y haz clic en el botón de “Enviar”.
  7. Se te proporcionará una Clave del sitio y una Clave secreta. Guárdalas; las necesitarás más adelante.

Paso 2: Agregar reCaptcha a tu formulario

Inserta el siguiente código justo antes del botón de enviar (o donde prefieras que aparezca el reCaptcha) en tu formulario:

<div class="g-recaptcha" data-sitekey="TU_CLAVE_DEL_SITIO"></div>

Reemplaza TU_CLAVE_DEL_SITIO con la Clave del sitio que obtuviste en el paso anterior.

Además, necesitas agregar este script justo antes del cierre de tu etiqueta </head>:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

Paso 3: Verificar reCaptcha en el lado del servidor

Antes de procesar los datos del formulario en el servidor, debes verificar que reCaptcha fue completado correctamente.

  1. Identificar el punto de procesamiento del formulario: Primero, identifica dónde se procesa tu formulario en WordPress. Este lugar es típicamente en el functions.php de tu tema, especialmente si has creado un formulario personalizado.
  2. Inserta el código de verificación: Una vez que hayas localizado el lugar en el que tu formulario es procesado, inserta el siguiente código para verificar el reCaptcha:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $recaptcha_secret = 'TU_CLAVE_SECRETA';
    $response = $_POST['g-recaptcha-response'];

    $verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$recaptcha_secret&response=$response");
    $captcha_success = json_decode($verify);

    if ($captcha_success->success == false) {
        // Aquí puedes manejar el error como desees. Por ejemplo:
        wp_die('Error en reCaptcha: ¡Eres un bot!');
   

Ten en cuenta que wp_die() es una función de WordPress que detiene la ejecución y muestra un mensaje. En un entorno real, querrás manejar este error de una manera más amigable para el usuario, quizás redirigiéndolo a una página de error o mostrando un mensaje en el mismo formulario.

Antes de modificar cualquier archivo en tu tema, asegúrate de que estés usando un tema hijo. De esta manera, tus cambios no se perderán cuando actualices tu tema principal.

Continua leyendo

wordpress noindex resultados de busqueda

Páginas noindex aparecen en búsquedas de WordPress: Cómo arreglarlo

En esta entrada te explico como prevenir que las páginas o entradas de tu Wordpress que has marcado como noindex, y que por lo tanto no deseas que los buscadores las rastreen, no aparezcan tampoco en los resultados de búsqueda del buscador interno de Wordpress.

Cómo implementar “Max-Image-Preview:large” para aparecer en Discover

Una de las claves para aparecer en Google Discover, es optimizar tu sitio web con ... Leer más
lost wordpress password

He perdido el acceso a WordPress, ¿cómo lo recupero?

Te enseño como recuperar el acceso como administrador a tu Wordpress en 5 minutos, y sin necesidad de conocimientos previos.