WooCommerce: как настроить авторизацию по email вместо логина

Зачем использовать email вместо логина для входа в WooCommerce

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

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

По умолчанию WooCommerce не позволяет войти через email в поле логина. Если пользователь вводит email, система пытается найти логин с таким именем, не находит и выдает ошибку "Неверный логин или пароль".

Чтобы проверить, попробуйте в форме входа WooCommerce ввести email зарегистрированного пользователя в поле "Имя пользователя или email". Если вход не удается, значит стандартное поведение не изменено.

Пошаговое решение: как разрешить вход через email в WooCommerce

1. Фильтр для авторизации по email

Добавим в functions.php текущей темы или в плагин сниппет, который преобразует email в логин перед проверкой:

add_filter('woocommerce_authenticate', 'wc_authenticate_email_login', 20, 3);
function wc_authenticate_email_login($user, $username, $password) {
    if (is_email($username)) {
        $user_data = get_user_by('email', $username);
        if ($user_data) {
            $username = $user_data->user_login;
        }
    }
    return wp_authenticate_username_password(null, $username, $password);
}

Объяснение:

  • Проверяем, является ли введенное имя email.
  • Если да, ищем пользователя по email.
  • Если пользователь найден, подставляем его логин.
  • Далее вызываем стандартную аутентификацию по логину и паролю.

2. Убедитесь, что поле формы поддерживает email или логин

В WooCommerce по умолчанию поле "Имя пользователя или email" уже есть, менять ничего не нужно.

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

1. Очистите кеш сайта и браузера.

2. Попробуйте войти на сайт, используя email зарегистрированного пользователя и правильный пароль.

3. Если вход успешен, значит решение работает.

4. Проверьте также вход по логину — он должен работать без изменений.

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

Частые ошибки и как их исправить

  • Ошибка: После добавления кода вход по email не работает.
    Причина: Конфликт с другими плагинами, которые переопределяют авторизацию.
    Решение: Отключите сторонние плагины по очереди, проверьте приоритет фильтра (20 — можно повысить до 30 или 50).
  • Ошибка: Не удается войти даже с правильным email и паролем.
    Причина: Пользователь с таким email отсутствует.
    Решение: Проверьте базу данных, есть ли такой email у пользователя.
  • Ошибка: Вход по логину перестал работать.
    Причина: Неправильное возвращаемое значение в фильтре.
    Решение: Убедитесь, что используется wp_authenticate_username_password с правильными параметрами и возвращается объект WP_User или WP_Error.

Практические советы по безопасности и производительности

  • Используйте SSL (HTTPS) для защиты передачи паролей.
  • Не меняйте стандартное поле "Имя пользователя или email", чтобы избежать проблем с совместимостью.
  • Добавьте ограничение на количество попыток входа с помощью плагинов типа Clearfy Pro или limit_login_attempts.
  • Периодически проверяйте, что email уникален в базе пользователей, чтобы избежать коллизий.

Сравнение способов реализации авторизации через email в WooCommerce

МетодПлюсыМинусыИспользование
Код в functions.phpЛегко внедрить, нет сторонних плагиновМожет конфликтовать с кастомными плагинамиЛучше для опытных разработчиков
Плагин сторонний (например, WooCommerce Email Login)Простота установки, поддержка, обновленияДополнительная нагрузка, возможны платные версииДля тех, кто не хочет писать код
Полная кастомизация формы и авторизацииМаксимальная гибкостьТребует глубоких знаний, больше времениДля сложных проектов
Как удалить заблокированных и неактивных пользователей в WordPress
02.03.2026
Как создать многоуровневое меню в WordPress: практическое руководство
02.12.2025
Как добавить собственные поля в WordPress: пошаговое руководство
14.11.2025
Как создать страницу настроек для плагина в WordPress
20.12.2025
Как обновить WordPress без ошибок и потери данных
27.11.2025