Google reCaptcha en los comentarios de WordPress sin plugins

David Wordpress Leave a Comment

¿Quieres agregar una barrera al SPAM en tus comentarios de WordPress?

Seguramente ya conoces el servicio de Google reCaptcha y lo más rápido y fácil es utilizar uno de los cientos de plugins de WordPress que existen para integrarlo en tus comentarios.

Pero si prefieres no sobrecargar tu WordPress con otro plugin, aquí te muestro como hacerlo con unas pocas líneas de código. Probado con la versión 4.9.6 de WordPress.

En primer lugar debes haber creado tu cuenta en https://www.google.com/recaptcha/ y registrar un nuevo sitio.

Una vez lo hayas creado se generarán dos claves.

Ahora llega el momento de añadir dichas claves junto con el código siguiente en tu archivo functions.php de tu theme* (lo recomendable es hacerlo en tu child theme para evitar perder los cambios cuando se actualice tu theme). Sustituir los textos ‘tu_clave_pública’ y ‘tu_clave_secreta’ por las claves que te haya generado Google reCaptcha.

¡Listo!

Ahora sube los cambios al servidor y ¡Eso es todo!

/**
* Google recaptcha en los comentarios de WordPress
*/
function add_google_recaptcha($submit_field) {
$submit_field['submit_field'] = '<div class="g-recaptcha" data-sitekey="tu_clave_pública"></div><br>' . $submit_field['submit_field'];
return $submit_field;
}
add_filter('comment_form_defaults','add_google_recaptcha');

wp_enqueue_script('google-recaptcha', 'https://www.google.com/recaptcha/api.js');
/**
* Google recaptcha check
*/
function is_valid_captcha($captcha) {
$captcha_postdata = http_build_query(array(
'secret' => 'tu_clave_secreta',
'response' => $captcha,
'remoteip' => $_SERVER['REMOTE_ADDR']));
$captcha_opts = array('http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $captcha_postdata));
$captcha_context = stream_context_create($captcha_opts);
$captcha_response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify" , false , $captcha_context), true);
if ($captcha_response['success'])
return true;
else
return false;
}

function verify_google_recaptcha() {
$recaptcha = $_POST['g-recaptcha-response'];
if (empty($recaptcha))
wp_die( __("<b>ERROR:</b> please select <b>I'm not a robot!</b><p><a href='javascript:history.back()'>« Back</a></p>"));
else if (!is_valid_captcha($recaptcha))
wp_die( __("<b>Go away SPAMMER!</b>"));
}
add_action('pre_comment_on_post', 'verify_google_recaptcha');

Si te ha gustado, comparte

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

(*) Los datos de carácter personal que facilites mediante este formulario serán tratados por David Viciano Martín, con la finalidad de gestionar los comentarios que realizas en este blog. Al marcar la casilla de aceptación, estás dando tu consentimiento expreso para que tus datos sean tratados conforme a las finalidades de este formulario, descritas en la política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en privacidad@lastpoke.com.