В WordPress по умолчанию регистрация пользователей открыта, если включена соответствующая настройка. Однако в некоторых случаях нужно полностью отключить регистрацию, изменить логику регистрации или фильтровать новых пользователей, чтобы предотвратить спам и нежелательных пользователей.
Почему важно контролировать регистрацию пользователей
Открытая регистрация пользователей может привести к появлению множества спам-аккаунтов, что сильно нагружает базу данных и приводит к проблемам с безопасностью. Кроме того, не всегда нужна регистрация для всех посетителей, особенно если сайт не предполагает работу с пользователями.
Иногда нужно изменить стандартную форму регистрации — добавить поля, изменить поведение или автоматически одобрять/отклонять заявки.
Как отключить регистрацию пользователей в WordPress без плагинов
Самый простой способ — отключить регистрацию в настройках: в админке перейдите в Настройки > Общие > Членство и снимите галочку «Любой может зарегистрироваться».
Но если вам нужно программно запретить регистрацию, например, чтобы отключить её только на время или под определённые условия, используйте следующий код. Добавьте его в functions.php вашей темы или в отдельный плагин:
function wpsource_disable_user_registration() {
if (isset($_GET['action']) && $_GET['action'] === 'register') {
wp_redirect(home_url());
exit;
}
}
add_action('login_init', 'wpsource_disable_user_registration');Этот код блокирует страницу регистрации, перенаправляя пользователя на главную страницу сайта. Таким образом, попытки зарегистрироваться через стандартную форму будут заблокированы.
Как изменить процесс регистрации: добавляем проверку на email и запрещаем определённые домены
Иногда нужно разрешить регистрацию, но отфильтровать адреса электронной почты, например, чтобы запретить регистрацию с временных или подозрительных почтовых доменов. Сделать это можно с помощью хука registration_errors:
function wpsource_restrict_email_domains($errors, $sanitized_user_login, $user_email) {
$blocked_domains = array('tempmail.com', 'mailinator.com', '10minutemail.com');
$email_domain = substr(strrchr($user_email, "@"), 1);
if (in_array($email_domain, $blocked_domains)) {
$errors->add('blocked_email_domain', __('Регистрация с этого домена электронной почты запрещена.'));
}
return $errors;
}
add_filter('registration_errors', 'wpsource_restrict_email_domains', 10, 3);Этот код проверяет домен почты при регистрации и, если домен есть в списке запрещённых, блокирует регистрацию с сообщением об ошибке.
Использование плагинов для расширенного контроля регистрации
Если хочется получить более гибкие возможности без написания кода, можно использовать готовые решения. Например:
- Clearfy Pro — плагин для оптимизации и безопасности, который позволяет отключать регистрацию, ограничивать доступ и фильтровать пользователей;
- WPCommunity — если нужна регистрация с расширенными возможностями профилей и контролем;
- My Popup — для создания кастомных окон регистрации и предупреждений.
В каждом из этих плагинов есть свои настройки для контроля регистрации и автоматической блокировки нежелательных пользователей.
Пример автоматического одобрения или отклонения регистрации на основе данных
Для примера можно реализовать автоматическое одобрение только пользователей с определёнными доменами почты, а остальных отклонять, используя следующий код:
function wpsource_auto_approve_or_reject($user_id) {
$user_info = get_userdata($user_id);
$email = $user_info->user_email;
$allowed_domains = array('example.com', 'wpsource.ru');
$email_domain = substr(strrchr($email, '@'), 1);
if (!in_array($email_domain, $allowed_domains)) {
require_once(ABSPATH . 'wp-admin/includes/user.php');
wp_delete_user($user_id);
}
}
add_action('user_register', 'wpsource_auto_approve_or_reject');Этот код при регистрации проверяет домен почты, и если он не входит в список разрешённых, удаляет пользователя сразу после регистрации.
Как перенаправлять пользователей после регистрации и авторизации
Чтобы улучшить UX, полезно настраивать перенаправления. Например, после регистрации можно направлять пользователей на страницу с инструкциями или благодарностью.
function wpsource_redirect_after_registration($redirect_to, $request, $user) {
return home_url('/welcome');
}
add_filter('registration_redirect', 'wpsource_redirect_after_registration', 10, 3);Для перенаправления после входа в систему можно использовать:
function wpsource_login_redirect($redirect_to, $requested_redirect_to, $user) {
if (isset($user->roles) && is_array($user->roles)) {
if (in_array('administrator', $user->roles)) {
return admin_url();
} else {
return home_url('/dashboard');
}
}
return $redirect_to;
}
add_filter('login_redirect', 'wpsource_login_redirect', 10, 3);Итог: гибкое управление регистрацией для вашего сайта
Контроль регистрации пользователей — важный элемент безопасности и удобства сайта на WordPress. С помощью простых хуков и фильтров можно отключить регистрацию, фильтровать пользователей по email, создавать перенаправления и даже автоматически удалять неподходящих пользователей.
Использование готовых плагинов, таких как Clearfy Pro, поможет быстро настроить мощную защиту и оптимизацию без глубоких знаний программирования.