Ставим 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 гугла с указанием нашего секретного ключа. Если получаем положительный ответ, пропускаем регистрацию дальше. Во всех остальных случаях выбрасываем ошибки и отменяем регистрацию.
Если вы все сделали правильно лице зреем результат: