Как удалить авторизацию по email в WordPress и разрешить вход только по логину

В стандартной установке WordPress вход на сайт возможен как по логину, так и по email-адресу пользователя. Несмотря на удобство, это может создавать проблемы с безопасностью или административным контролем, особенно если нужно ограничить доступ только по логину. В этой статье мы подробно разберём, как убрать возможность авторизации по email, оставив только вход по логину. Рассмотрим примеры кода и полезные плагины, которые помогут решить эту задачу.

Почему стоит ограничить вход только по логину

Обычно WordPress позволяет авторизоваться используя либо логин, либо email. Однако иногда это может приводить к следующим проблемам:

  • Уязвимость к перебору: если email известен, злоумышленник может пытаться подобрать пароль, используя email, что упрощает задачу.
  • Административный контроль: в некоторых компаниях логины стандартизированы, а email может меняться — разрешать вход только по логину удобнее для администраторов.
  • Совместимость с внешними системами: если интеграции требуют аутентификацию по логину, возможность входа по email мешает контролю.

Поэтому задача отключить авторизацию по email достаточно актуальна.

Как WordPress обрабатывает аутентификацию по email и логину

Чтобы понять, как отключить вход по email, нужно знать, что в WordPress функция wp_authenticate_username_password в файле wp-includes/class-wp-authenticate.php обрабатывает аутентификацию пользователя. Если в поле login введён email, то система сначала ищет пользователя с этим email и подставляет логин для дальнейшей проверки пароля.

Задача — перехватить вводимые данные при логине и проверить, что поле login не содержит email, либо не преобразовывать email в логин.

Решение: фильтр для отключения авторизации по email

Самый простой способ — добавить фильтр, который будет запрещать вход, если в поле логина введён email.

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

add_filter('authenticate', 'wpcore_disable_email_authentication', 20, 3);
function wpcore_disable_email_authentication($user, $username, $password) {
    if (is_email($username)) {
        return new WP_Error('email_auth_disabled', __('Авторизация по email отключена. Используйте логин.'));
    }
    return $user;
}

Этот код использует стандартную функцию is_email() для проверки, является ли введённое значение email. Если да — возвращается ошибка, и вход отклоняется.

Как это работает

Фильтр authenticate вызывается во время попытки авторизации, позволяя перехватить и изменить процесс. При обнаружении email мы прерываем процесс и показываем ошибку.

Улучшение UX: выводим кастомное сообщение об ошибке

Чтобы сообщение об ошибке выглядело аккуратно на странице входа, можно использовать стандартный механизм WordPress. Наш код уже возвращает объект WP_Error с нужным сообщением, WordPress автоматически его покажет.

Если вы хотите изменить стиль или текст, можно дополнительно подключить фильтр login_errors.

Альтернативный подход: замена email на логин автоматически

Если вы хотите не запрещать вход по email, а автоматически преобразовывать email в логин, можно использовать следующий код:

add_filter('authenticate', 'wpcore_email_to_login_authentication', 20, 3);
function wpcore_email_to_login_authentication($user, $username, $password) {
    if (is_email($username)) {
        $user_data = get_user_by('email', $username);
        if ($user_data) {
            $username = $user_data->user_login;
        } else {
            return new WP_Error('invalid_email_login', __('Пользователь с таким email не найден.'));
        }
    }
    return wp_authenticate_username_password(null, $username, $password);
}

Однако это стандартное поведение WordPress, и если вам нужно именно удалить такую возможность, то лучше первый способ.

Плагины для контроля аутентификации в WordPress

Если вы не хотите писать код, можно воспользоваться плагинами, позволяющими управлять способами входа:

  • Clearfy Pro — плагин для оптимизации и безопасности WordPress, в котором есть настройки для ограничения способов авторизации.
  • WPCommunity — плагин для создания сообщества с расширенным контролем регистрации и входа.

Использование плагинов удобно для тех, кто не хочет править код, но с ними нужно внимательно настраивать параметры, чтобы не блокировать легитимных пользователей.

Как протестировать решение

После добавления кода или установки плагина обязательно проверьте:

  • Попытку войти с логином — должна быть успешной.
  • Попытку войти с email — должна быть отклонена с сообщением ошибки.
  • Проверьте работу восстановления пароля — она должна работать как и прежде.

Рекомендуется проверить на нескольких браузерах и в режиме инкогнито, чтобы исключить влияние кэша.

Заключение

Ограничение входа в WordPress только по логину — простая, но эффективная мера безопасности и контроля доступа. С помощью небольшого кода можно быстро реализовать запрет авторизации по email, улучшая безопасность сайта без потери удобства для пользователей.

Если хотите расширенные функции безопасности и управления входом — обратите внимание на Clearfy Pro или WPCommunity.

Изменение URL типа записи в WordPress без потери SEO и редиректов
11.12.2025
WooCommerce: как автоматически удалять старые нераскрытые заказы по дате
19.05.2026
Как избежать конфликтов между плагинами в WordPress
07.02.2026
Оптимизация базы данных WordPress: эффективные методы и примеры кода
15.11.2025
WordPress: как правильно использовать мета-записи для улучшения производительности
06.03.2026