Cómo implementar reCAPTCHA v2 en WordPress con un formulario personalizado
La seguridad es clave en cualquier sitio web, y Google reCAPTCHA es una excelente herramienta para evitar spam y accesos automatizados. En este artículo, aprenderás cómo implementar reCAPTCHA v2 en WordPress con un simple formulario personalizado, utilizando únicamente programación.
Obtener las claves de reCAPTCHA
- Ve a Google reCAPTCHA V2.
- Registra tu sitio y selecciona la opción reCAPTCHA v2.
- Obtén las claves de Sitio y Secreta. Guárdalas, ya que las usarás más adelante.
Crear el formulario básico
Comencemos creando un formulario simple que incluya el reCAPTCHA. Usa el siguiente snippet para generar un formulario con un shortcode.
<?php
// Crear el formulario con reCAPTCHA v2
function custom_recaptcha_form() {
$siteKey = 'TU_CLAVE_DE_SITIO'; // Reemplaza con tu clave de sitio
ob_start(); ?>
<form id="customForm" method="post" action="">
<p>
<label for="name">Nombre</label>
<input type="text" name="name" id="name" required>
</p>
<p>
<label for="email">Correo Electrónico</label>
<input type="email" name="email" id="email" required>
</p>
<div class="g-recaptcha" data-sitekey="<?php echo esc_attr( $siteKey ); ?>"></div>
<p>
<input type="submit" name="submit" value="Enviar">
</p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('custom_recaptcha_form', 'custom_recaptcha_form');
Agrega este shortcode [custom_recaptcha_form]en cualquier página para mostrar el formulario.
Cargar el script de reCAPTCHA
Es necesario incluir el script de reCAPTCHA en la página. Usa este snippet para hacerlo:
<?php
// Incluir el script de reCAPTCHA en el frontend
function load_recaptcha_script() {
wp_enqueue_script(
'google-recaptcha',
'https://www.google.com/recaptcha/api.js',
[],
null,
true
);
}
add_action('wp_enqueue_scripts', 'load_recaptcha_script');
Validar reCAPTCHA en el servidor
Para verificar que el usuario no es un robot, debes enviar el token generado por reCAPTCHA al servidor y validarlo con la clave secreta. Usa el siguiente código:
<?php
// Validar reCAPTCHA al enviar el formulario
function validate_recaptcha_submission() {
if ( isset( $_POST['submit'] ) ) {
$secretKey = 'TU_CLAVE_SECRETA'; // Reemplaza con tu clave secreta
$recaptchaResponse = sanitize_text_field( $_POST['g-recaptcha-response'] );
$remoteIp = $_SERVER['REMOTE_ADDR'];
$response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', [
'body' => [
'secret' => $secretKey,
'response' => $recaptchaResponse,
'remoteip' => $remoteIp,
],
]);
$responseBody = json_decode( wp_remote_retrieve_body( $response ), true );
if ( ! $responseBody['success'] ) {
wp_die('La verificación de reCAPTCHA falló. Por favor, intenta de nuevo.');
}
// Procesar datos del formulario si la validación es exitosa
echo '<p>¡Formulario enviado con éxito!</p>';
}
}
add_action('init', 'validate_recaptcha_submission');
Personalizar la validación y el diseño (opcional)
Puedes añadir estilos personalizados para mejorar la apariencia del formulario. Por ejemplo:
<?php
// Estilos para el formulario
function custom_form_styles() {
echo '<style>
form#customForm {
max-width: 400px;
margin: 0 auto;
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
background-color: #f9f9f9;
}
form#customForm p {
margin-bottom: 15px;
}
form#customForm input {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
</style>';
}
add_action('wp_head', 'custom_form_styles');
En resumen
- Inserta el shortcode
[custom_recaptcha_form]en una página para visualizar el formulario. - Envía el formulario para verificar si reCAPTCHA bloquea correctamente las solicitudes automatizadas.
- Si necesitas deshabilitar el formulario en ciertas páginas, envuelve el shortcode en una condición dentro del código.



