WooCommerce: как настроить отправку писем при ошибках регистрации пользователя

Проблема: отсутствие уведомлений при ошибках регистрации в WooCommerce

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

Диагностика проблемы

Чтобы убедиться, что ошибки регистрации не отправляются по почте, проверьте следующий сценарий:

  • Попытайтесь зарегистрировать пользователя с уже существующим email или логином;
  • При отображении ошибки обратите внимание, что email-уведомления не приходят ни вам, ни пользователю;
  • Проверьте настройки WooCommerce в разделе WooCommerce > Настройки > Аккаунты и конфиденциальность, где нет опций по отправке таких уведомлений;
  • Посмотрите логи почты (если есть) или используйте плагин для логирования почты, например WP Mail Logging;
  • Обратите внимание, что стандартный хук woocommerce_registration_errors не инициирует отправку email.

Пошаговое решение: добавляем отправку email при ошибках регистрации

Реализуем отправку писем администратору и пользователю при возникновении ошибок регистрации через кастомный код в functions.php вашей темы или в отдельном плагине.

1. Подключаем хук на фильтр ошибок регистрации

add_filter('woocommerce_registration_errors', 'wpbest_notify_registration_errors', 10, 3);
function wpbest_notify_registration_errors($errors, $username, $email) {
    if (!empty($errors->errors)) {
        $admin_email = get_option('admin_email');
        $error_messages = '';
        foreach ($errors->errors as $code => $messages) {
            foreach ($messages as $message) {
                $error_messages .= "- {$message}\n";
            }
        }

        // Отправляем письмо администратору
        wp_mail(
            $admin_email,
            'Ошибка регистрации пользователя на сайте ' . get_bloginfo('name'),
            "Произошла ошибка при попытке регистрации пользователя с логином: {$username} и email: {$email}.\n\nОшибки:\n{$error_messages}"
        );

        // Отправляем письмо пользователю
        $user_subject = 'Ошибка регистрации на сайте ' . get_bloginfo('name');
        $user_message = "Здравствуйте, {$username}!\n\nПри попытке регистрации на сайте возникли следующие ошибки:\n{$error_messages}\nПожалуйста, исправьте их и попробуйте снова.";
        wp_mail($email, $user_subject, $user_message);
    }
    return $errors;
}

2. Проверяем корректность отправки писем

  • Сделайте тестовую регистрацию с неверными данными (например, уже существующий email);
  • Проверьте почту администратора и email, указанный при регистрации;
  • Убедитесь, что письма пришли и содержат подробности ошибок;
  • Если письма не приходят, проверьте логи почты и настройки SMTP на сайте;
  • Для отладки используйте плагин WP Mail Logging.

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

Чтобы убедиться, что решение работает правильно:

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

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

  • Письма не отправляются — проверьте настройки SMTP, используйте плагины вроде WP Mail SMTP для настройки почты.
  • Письма попадают в спам — настройте SPF, DKIM записи у вашего домена, используйте авторитетные SMTP-серверы.
  • Некорректный формат ошибок — проверьте, что вы правильно перебираете объект $errors и используете вложенные циклы по массивам.
  • Письмо пользователю не приходит — убедитесь, что email пользователя корректен и передается в функцию.

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

  • Не отправляйте слишком подробную информацию об ошибках пользователям — избегайте утечки данных.
  • Логи ошибок регистрации храните отдельно в защищенном месте, если планируете расширять функционал.
  • Используйте SMTP-сервис с поддержкой аутентификации для надежной доставки писем.
  • Кешируйте страницу регистрации только если уверены, что это не помешает обработке ошибок.

Сравнение способов уведомления об ошибках регистрации

СпособОписаниеПлюсыМинусы
Стандартные сообщения на страницеWooCommerce показывает ошибки регистрации на экранеПростота, без настроекНет email-уведомлений, можно пропустить ошибку
Кастомный код для отправки emailОтправка писем администратору и пользователю при ошибкахУведомления в реальном времени, контроль ситуацииТребует настройки почты, может увеличить нагрузку
Плагины уведомленийИспользование плагинов для расширенных уведомленийГотовые решения, дополнительные функцииМогут конфликтовать, требуют обновлений
WooCommerce: реальные сценарии изменения цены при выборе атрибутов товаров
14.07.2026
Как настроить очистку базы данных WordPress от старых данных
19.11.2025
WooCommerce: правильная настройка отправки писем и решение типичных проблем
27.07.2026
Как автоматизировать обновление тем WordPress и устроить безопасность сайта
02.03.2026
Как добавить динамические таблицы в WordPress без плагинов
25.02.2026