Для многих сайтов на WordPress важна защита от спам-регистраций и нежелательных пользователей. Особенно актуально это для порталов с открытой регистрацией, форумов, магазинов или сообществ. В этой статье подробно разберем, как установить ограничения на регистрацию пользователей в WordPress с помощью проверки email и капчи, чтобы снизить количество фейковых аккаунтов и ботов.
Почему важно ограничивать регистрацию и проверять email
Открытая регистрация без ограничений быстро приводит к спаму и засорению базы данных. Боты создают тысячи фейковых пользователей, что увеличивает нагрузку на сервер, ухудшает производительность и мешает вести аналитику. Проверка email — обязательный шаг для подтверждения реальности пользователя. Это помогает:
- Обеспечить качество аудитории.
- Избежать фейковых регистраций.
- Повысить безопасность сайта.
Кроме того, капча помогает защититься от автоматических регистраций, которые обходят стандартные проверки.
Использование плагинов для ограничения регистрации
Самый простой способ — использовать готовые плагины с функционалом проверки email и капчи. Рассмотрим несколько проверенных решений.
Плагин WP-reCAPTCHA
Этот плагин добавляет Google reCAPTCHA на страницу регистрации, входа и восстановления пароля. Он прост в установке и настройке.
После установки в настройках укажите ключи reCAPTCHA, которые нужно получить в Google reCAPTCHA Admin. Плагин автоматически добавит капчу на формы.
Плагин Email Verification / Email Confirmation
Этот плагин добавляет обязательную проверку email при регистрации — пользователь получает письмо с ссылкой для подтверждения аккаунта. Без подтверждения вход невозможен.
Кастомная проверка email и капча через код
Если вы хотите более гибкий контроль и не хотите использовать плагины, можно добавить ограничения программно. Рассмотрим пример с проверкой домена email и интеграцией капчи Google reCAPTCHA v2.
Проверка домена email
В этом примере мы разрешим регистрацию только с корпоративных email, например, из домена example.com.
function wp5ru_validate_email_domain($errors, $sanitized_user_login, $user_email) {
$allowed_domain = 'example.com';
$email_domain = substr(strrchr($user_email, '@'), 1);
if ($email_domain !== $allowed_domain) {
$errors->add('invalid_email_domain', __('Регистрация разрешена только с email домена example.com'));
}
return $errors;
}
add_filter('registration_errors', 'wp5ru_validate_email_domain', 10, 3);Этот код добавляем в файл functions.php дочерней темы или в свой плагин.
Интеграция Google reCAPTCHA v2
Для начала нужно получить ключи reCAPTCHA (сайт и секретный) в Google. Далее добавим капчу на форму регистрации и проверим ответ.
Добавляем капчу на форму регистрации:
function wp5ru_add_recaptcha_to_registration() {
?>
<div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ_САЙТА"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<?php
}
add_action('register_form', 'wp5ru_add_recaptcha_to_registration');Проверяем отправку формы:
function wp5ru_verify_recaptcha_on_registration($errors, $sanitized_user_login, $user_email) {
if (empty($_POST['g-recaptcha-response'])) {
$errors->add('recaptcha_error', __('Пожалуйста, подтвердите, что вы не робот.'));
return $errors;
}
$response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', array(
'body' => array(
'secret' => 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR'],
),
));
$response_body = wp_remote_retrieve_body($response);
$result = json_decode($response_body, true);
if (empty($result['success'])) {
$errors->add('recaptcha_error', __('Ошибка проверки reCAPTCHA. Попробуйте еще раз.'));
}
return $errors;
}
add_filter('registration_errors', 'wp5ru_verify_recaptcha_on_registration', 20, 3);Дополнительные методы ограничения регистрации в WordPress
Помимо проверки email и капчи, полезно рассмотреть другие способы ограничения регистрации.
Ограничение на количество регистраций с одного IP
Можно хранить в базе количество регистраций с IP и блокировать повторные регистрации, если превышен лимит. Для этого используется фильтр registration_errors с дополнительной проверкой.
Отключение регистрации для конкретных ролей
Если регистрация нужна только для определенных ролей, можно запретить создание пользователей с другими ролями через хук user_register или фильтр pre_user_role.
Использование капчи в виджетах и кастомных формах
Если на сайте есть кастомные формы регистрации или формы в виджетах, можно интегрировать капчу с помощью плагинов или той же Google reCAPTCHA, добавляя проверку вручную.
Выводы и рекомендации
Настройка ограничений на регистрацию — важный шаг для защиты сайта на WordPress от спама и фейков. Используйте проверку email, предпочтительно с подтверждением, и капчу, чтобы минимизировать нежелательные регистрации. Для удобства и надежности рекомендуем использовать проверенные плагины, например, WP-reCAPTCHA и Email Verification, а для точечных задач — кастомный код.
Если хотите комплексное решение с расширенными возможностями, обратите внимание на продукты WPSHOP, например, Email Verification.