WPForms и WooCommerce: как скрыть email пользователя в уведомлениях о заказах

Проблема: необходимость скрыть email пользователя в уведомлениях WooCommerce

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

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

Для начала убедитесь, что email пользователя действительно передается в уведомления WooCommerce. Сделать это можно, отправив тестовый заказ и проверив содержимое письма на email администратора.

Также проверьте, откуда именно берется email: из данных WPForms, переданных в заказ, или из стандартных полей WooCommerce.

Как проверить источник email в уведомлениях

  • В админке WordPress перейдите в WooCommerce > Заказы и откройте последний заказ.
  • Посмотрите, какие данные содержатся в метаполях заказа (Custom Fields).
  • Проверьте настройки WPForms, какие поля email используются и как они передаются в WooCommerce (например, через хуки woocommerce_checkout_create_order или woocommerce_new_order).

Пошаговое решение: замена email на маску в уведомлениях WooCommerce

Для скрытия email в уведомлениях нужно перехватить отправку письма и заменить адрес пользователя на замаскированный вариант. Сделать это можно с помощью фильтра woocommerce_email_recipient_new_order или в шаблонах уведомлений.

Пример кода для маскировки email в уведомлениях

add_filter('woocommerce_email_recipient_new_order', 'wpforms_mask_user_email_in_email', 10, 2);
function wpforms_mask_user_email_in_email($recipient, $order) {
    // Получаем email покупателя
    $email = $order->get_billing_email();
    if (!$email) {
        return $recipient;
    }

    // Маскируем часть email: заменяем все символы до '@' на звездочки, оставляя первые и последние по 1 символу
    list($name, $domain) = explode('@', $email);
    if (strlen($name) > 2) {
        $masked_name = substr($name, 0, 1) . str_repeat('*', strlen($name) - 2) . substr($name, -1);
    } else {
        $masked_name = str_repeat('*', strlen($name));
    }
    $masked_email = $masked_name . '@' . $domain;

    // Заменяем email в получателях письма
    if (stripos($recipient, $email) !== false) {
        $recipient = str_ireplace($email, $masked_email, $recipient);
    }

    return $recipient;
}

Этот фильтр заменит email получателя в письме на маскированный вариант, например: j***e@example.com.

Как скрыть email в тексте письма

Помимо адреса получателя, email может отображаться в самом теле письма. Для этого потребуется изменить шаблон уведомления или использовать фильтр woocommerce_email_order_meta.

add_action('woocommerce_email_order_meta', 'wpforms_mask_email_in_order_meta', 10, 3);
function wpforms_mask_email_in_order_meta($order, $sent_to_admin, $plain_text) {
    $email = $order->get_billing_email();
    if (!$email) {
        return;
    }

    list($name, $domain) = explode('@', $email);
    if (strlen($name) > 2) {
        $masked_name = substr($name, 0, 1) . str_repeat('*', strlen($name) - 2) . substr($name, -1);
    } else {
        $masked_name = str_repeat('*', strlen($name));
    }
    $masked_email = $masked_name . '@' . $domain;

    echo '<p><strong>Пользователь email:</strong> ' . esc_html($masked_email) . '</p>';
}

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

  1. Создайте тестовый заказ через форму WPForms с интеграцией в WooCommerce.
  2. Проверьте email администратора или другого получателя уведомления — email пользователя должен быть замаскирован.
  3. Проверьте содержимое письма, чтобы убедиться, что email в тексте уведомления тоже скрыт.
  4. При необходимости откорректируйте маскировку.

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

  • Замена email не сработала: возможно, фильтр подключён неправильно или приоритет слишком низкий. Попробуйте повысить приоритет, например, до 20.
  • Маскировка работает, но email виден в других уведомлениях: добавьте фильтры для других событий WooCommerce, например, woocommerce_email_recipient_customer_processing_order.
  • Email не подменяется в теле письма: требуется изменить именно шаблон уведомления или применить дополнительные хуки, так как стандартный woocommerce_email_order_meta может не покрывать все места.

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

  • Не храните реальные email пользователей в публичных местах или в виде открытого текста в шаблонах письма.
  • Используйте кэширование и минимизируйте количество тяжелых операций при маскировке, чтобы не замедлять отправку почты.
  • Если требуется более сложное управление уведомлениями, рассмотрите использование плагинов, поддерживающих кастомизацию WooCommerce email, например Clearfy Pro.

Чек-лист для реализации маскировки email в WPForms + WooCommerce

  • Проверить, откуда берется email пользователя.
  • Добавить фильтр woocommerce_email_recipient_new_order для маскировки email в получателях.
  • Добавить action woocommerce_email_order_meta для маскировки email в теле письма.
  • Протестировать отправку заказов и проверить письма.
  • Исправить ошибки и добавить поддержку других типов уведомлений, если нужно.

Сравнение способов маскировки email в уведомлениях WooCommerce

МетодГде маскируетсяПлюсыМинусы
Фильтр woocommerce_email_recipient_new_orderВ поле получателя письмаПростой, не требует правки шаблоновНе скрывает email в теле письма
Action woocommerce_email_order_metaВ теле письмаМожно кастомизировать отображение, гибкоТребует программирования, может не покрыть весь текст письма
Редактирование шаблонов emailВесь текст письмаМаксимальный контроль над содержимымТрудоемко, сложнее поддерживать при обновлениях WooCommerce
Как создать подключаемые поля в WPForms с применением хуков
27.01.2026
WPForms и WooCommerce: автоматическая подстановка данных пользователя в формы
10.07.2026
Как добавить поля калькулятора в WPForms с применением кода
13.04.2026
Защита форм WPForms от спама с помощью reCAPTCHA и CAPTCHA
06.01.2026
Оптимизация производительности WPForms за счёт правильной работы с базой данных
09.02.2026