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

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

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

Диагностика проблемы с авторизацией по логину

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

  • Попросите пользователя попробовать вход по email;
  • Проверьте, что в базе данных у пользователя указан email;
  • Проверьте, что WooCommerce и WordPress обновлены до актуальных версий.

Пошаговое решение: авторизация по email вместо логина

1. Добавляем фильтр для входа по email

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

add_filter('authenticate', 'wp_authenticate_email_login', 20, 3);
function wp_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;
        } else {
            return new WP_Error('invalid_email', __('Неверный email адрес.'));
        }
    }
    return wp_authenticate_username_password(null, $username, $password);
}

2. Обновляем форму входа WooCommerce

Если хотите, чтобы в форме входа вместо поля «Имя пользователя» отображался email, можно переопределить шаблон WooCommerce. В папке темы создайте woocommerce/myaccount/form-login.php и замените поле логина на email:

<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
    <label for="username">Email адрес <span class="required">*</span></label>
    <input type="email" class="woocommerce-Input woocommerce-Input--text input-text" name="username" id="username" autocomplete="email" value="<?php echo ( ! empty( $_POST['username'] ) ) ? esc_attr( wp_unslash( $_POST['username'] ) ) : ''; ?>" />
</p>

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

  • Очистите кэш сайта и браузера;
  • Попробуйте войти на сайт под существующим пользователем, введя email в поле логина;
  • Проверьте, что вход происходит корректно и нет ошибок;
  • Проверьте, что вход через логин также не нарушен (если хотите сохранить оба варианта), иначе ограничьте проверку только для email.

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

  • Ошибка: "Неверный email адрес" даже при верном email. Проверьте, что email действительно есть в базе пользователей и не опечатан в форме.
  • Авторизация не работает, если вводить логин. Если вы хотите поддерживать вход по логину и email, нужно расширить код, чтобы не блокировать логин.
  • Проблемы с плагинами безопасности или кэширования. Иногда они могут блокировать нестандартную авторизацию. Отключите плагины поочередно для диагностики.

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

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

Сравнение вариантов реализации авторизации по email

МетодПлюсыМинусыПример кода/плагина
Фильтр authenticate (код) Полный контроль, легковесное решение Требуется правка кода, требует поддержки при обновлениях Код из статьи
Плагин "Login with Email" Быстрая установка, поддержка разработчика Дополнитель нагрузка, возможна несовместимость WP Email Login
Использование плагина безопасности с функцией логина по email Дополнитель функции безопасности Сложнее настроить, может конфликтовать с WooCommerce Например, Wordfence, iThemes Security
Как добавить уникальный файловый заголовок (Content-Disposition) в WordPress
02.04.2026
Как настроить автоматический импорт данных из внешнего источника в WordPress
05.02.2026
WooCommerce: как настроить авторизацию по email вместо логина
02.05.2026
Как добавить собственные поля в WordPress: пошаговое руководство
14.11.2025
Оптимизация изображений в WordPress для ускорения сайта
16.12.2025