главная/Ставим google recaptcha для формы регистрации на WordPress

Ставим google recaptcha для формы регистрации на WordPress

Для чего вообще нужна капча на сайте, конкретно в нашем случае на форме регистрации ? В первую очередь, для того чтобы отсеять спам ботов при регистрации на вашем ресурсе. Далее, я расскажу вам как можно легко интегрировать Google reCAPTCHA на WordPress.

 

Создаем captcha

Для начала переходим сюда https://www.google.com/recaptcha и нажимаем кнопку: get reCAPTCHA.

Теперь нам нужно зарегистрировать наш сайт и сгенерировать ключи для нашей капчи.

После успешной регистрации мы получим 2 ключа: site-key и secret-key.

 

Открываем файл functions.php вашей WordPress темы и пишем следующие функции:

Добавляем скрипт api для работы капчи, на форму регистрации:

Вставляем саму капчу туда же:

function display_google_recaptcha() { ?>
    


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



<?php }
add_action("register_form", "display_google_recaptcha");

В атрибут data-sitekey вставляем ранее полученный ключ “site-key”.

 

А теперь самое интересное, пишем функцию для проверки:

function verify_google_recaptcha($errors, $sanitized_user_login, $user_email) {
	if (isset($_POST['g-recaptcha-response'])) {
		$secret_key = 'secret-key';
		$response = wp_remote_get("https://www.google.com/recaptcha/api/siteverify?secret=". $secret_key ."&response=". $_POST['g-recaptcha-response']);
		$response = json_decode($response["body"], true);
		if ($response["success"] == true) {
			return $errors;
		} else {
			$errors->add("reCaptcha Invalid", __("Ошибка Регистрации: Похоже вы не человек.","textdomain"));
		}
	} else {
		$errors->add("reCaptcha Invalid", __("Ошибка Регистрации: Похоже вы бот. Если у вас отключен JavaScript","textdomain"));
	}
	return $errors;
}
add_filter("registration_errors", "verify_google_recaptcha", 10, 3);

Вешаем функцию verify_google_recaptcha на фильтр registration_errors. В которой проверяем, пришла ли к нам в глобальном массиве POST наша капча, если да то отправляем запрос на api гугла с указанием нашего секретного ключа. Если получаем положительный ответ, пропускаем регистрацию дальше. Во всех остальных случаях выбрасываем ошибки и отменяем регистрацию.

 

Если вы все сделали правильно лице зреем результат:

 

Весь код: