Вопрос или проблема
С Новым годом!
Просто интересно, знает ли кто, как можно использовать Google reCaptcha на странице входа в WP?
Либо v2, либо v3
С Новым годом.
Вот плагин для этого: https://wordpress.org/plugins/login-recaptcha/
Пожалуйста, проверьте. Я уверен, что вы сможете удовлетворить свои требования.
Что касается плагина, определенно рассмотрите Login No Captcha reCAPTCHA от Роберта Пика.
Если вы хотите интегрировать что-то в свою тему, не добавляя другой плагин, Меган из Megabyte создала статью.
<?php
/**
* Эти функции добавляют и проверяют невидимую Google reCAPTCHA на странице входа
*/
add_action('login_enqueue_scripts', 'login_recaptcha_script');
function login_recaptcha_script() {
wp_register_script('recaptcha_login', 'https://www.google.com/recaptcha/api.js');
wp_enqueue_script('recaptcha_login')
}
add_action( 'login_form', 'display_recaptcha_on_login' );
function display_recaptcha_on_login() {
echo "<script>
function onSubmit(token) {
document.getElementById('loginform').submit();
}
</script>
<button class="g-recaptcha" data-sitekey='ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ' data-callback='onSubmit' data-size="invisible" style="display:none;">Отправить</button>";
}
add_filter('wp_authenticate_user', 'verify_recaptcha_on_login', 10, 2);
function verify_recaptcha_on_login($user, $password) {
if (isset($_POST['g-recaptcha-response'])) {
$response = wp_remote_get( 'https://www.google.com/recaptcha/api/siteverify?secret=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ&response=" . $_POST["g-recaptcha-response'] );
$response = json_decode($response['body'], true);
if (true == $response['success']) {
return $user;
} else {
// FIXME: Эта ошибка возникает, если ваш пароль неверен... Проверьте, был ли пароль неверным, прежде чем возвращать эту ошибку...
// return new WP_Error( 'Captcha Invalid', __('<strong>ОШИБКА</strong>: Вы бот') );
}
} else {
return new WP_Error( 'Captcha Invalid', __('<strong>ОШИБКА</strong>: Вы бот. Если это не так, включите JavaScript.') );
}
}
.
Ответ или решение
Как внедрить Google reCAPTCHA на странице входа в WordPress
С Новым годом! Вопрос подключения Google reCAPTCHA к странице входа в WordPress довольно актуален для обеспечения безопасности вашего сайта. В этой статье мы рассмотрим два способа: с использованием плагина и без него, внедрив решение напрямую в тему.
Способ 1: Использование плагина
Одним из простейших способов интеграции reCAPTCHA является использование плагина. Рекомендуем рассмотреть плагин Login No Captcha reCAPTCHA от Роберта Пика. Он обеспечивает поддержку reCAPTCHA v2 и v3, что делает его универсальным решением.
Шаги по установке плагина:
- Зайдите в админку WordPress.
- Перейдите в раздел «Плагины» -> «Добавить новый».
- Введите в строке поиска «Login No Captcha reCAPTCHA» и установите плагин.
- Активируйте плагин.
- Перейдите в настройки плагина и внесите ваш публичный и секретный ключи reCAPTCHA, которые можно получить на сайте Google reCAPTCHA.
Способ 2: Интеграция без плагина
Если вы предпочитаете не устанавливать дополнительные плагины, вы можете добавить Google reCAPTCHA вручную. Для этого выполните следующие шаги:
Шаг 1: Подготовьте скрипт
Добавьте следующий код в файл functions.php
вашей активной темы. Этот код будет загружать скрипт reCAPTCHA и выводить его на странице входа.
add_action('login_enqueue_scripts', 'login_recaptcha_script');
function login_recaptcha_script() {
wp_register_script('recaptcha_login', 'https://www.google.com/recaptcha/api.js');
wp_enqueue_script('recaptcha_login');
}
Шаг 2: Отобразите reCAPTCHA на странице входа
Далее добавьте следующий код, чтобы отобразить reCAPTCHA на форме входа:
add_action('login_form', 'display_recaptcha_on_login');
function display_recaptcha_on_login() {
echo "<script>
function onSubmit(token) {
document.getElementById('loginform').submit();
}
</script>
<button class='g-recaptcha' data-sitekey='YOUR_PUBLIC_KEY' data-callback='onSubmit' data-size='invisible' style='display:none;'></button>";
}
Шаг 3: Проверка reCAPTCHA
Теперь добавим код для проверки reCAPTCHA при аутентификации пользователей:
add_filter('wp_authenticate_user', 'verify_recaptcha_on_login', 10, 2);
function verify_recaptcha_on_login($user, $password) {
if (isset($_POST['g-recaptcha-response'])) {
$response = wp_remote_get('https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=' . $_POST["g-recaptcha-response"]);
$response = json_decode($response['body'], true);
if (true == $response['success']) {
return $user;
} else {
return new WP_Error('Captcha Invalid', __('<strong>ERROR</strong>: Вы бот.'));
}
} else {
return new WP_Error('Captcha Invalid', __('<strong>ERROR</strong>: Вы бот. Если это не так, активируйте JavaScript.'));
}
}
Заключение
Интеграция Google reCAPTCHA на страницу входа в WordPress — это важный шаг для повышения безопасности вашего сайта. Выбор между плагином и ручной интеграцией зависит от ваших предпочтений и уровня комфорта с кодом. Используя описанные методы, вы сможете защитить свой сайт от ботов и нежелательных входов.
Не забудьте заменить YOUR_PUBLIC_KEY
и YOUR_SECRET_KEY
на свои ключи reCAPTCHA. Удачи в повышении безопасности вашего WordPress сайта!