Как использовать WooCommerce хуки для дополнительного уведомления о платеже

Диагностика задачи: зачем добавлять дополнительное уведомление о платеже в WooCommerce

По умолчанию WooCommerce отправляет стандартные письма клиенту и администратору при изменении статуса заказа, включая успешную оплату. Однако в ряде случаев требуется отправить кастомные уведомления — например, в сторонние сервисы, CRM, мессенджеры или добавить дополнительный контент в письмо. Для этого нужно использовать хуки WooCommerce, реагирующие на смену статуса заказа, и внедрять собственный код отправки уведомлений.

Какие хуки WooCommerce использовать для уведомлений о платеже

Основной хук для отслеживания изменения статуса заказа — woocommerce_order_status_changed. Он вызывается с параметрами: ID заказа, старый статус, новый статус. Для отлавливания момента успешной оплаты чаще всего используют переход заказа в статус processing или completed (в зависимости от настроек оплаты и типа товара).

Пример базового подключения:

add_action('woocommerce_order_status_changed', 'custom_payment_notification', 10, 3);
function custom_payment_notification($order_id, $old_status, $new_status) {
    if ($new_status === 'processing') {
        // Логика уведомления
    }
}

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

1. Подключаем хук

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

add_action('woocommerce_order_status_changed', 'send_custom_payment_notification', 10, 3);
function send_custom_payment_notification($order_id, $old_status, $new_status) {
    if ($new_status === 'processing') {
        $order = wc_get_order($order_id);
        if (!$order) return;

        $email = $order->get_billing_email();
        $total = $order->get_total();
        $items = [];
        foreach ($order->get_items() as $item) {
            $items[] = $item->get_name() . ' x ' . $item->get_quantity();
        }

        $message = "Поступила оплата по заказу #$order_id\n";
        $message .= "Покупатель: $email\n";
        $message .= "Товары: " . implode(', ', $items) . "\n";
        $message .= "Сумма: $total";

        // Отправка письма (пример на wp_mail)
        wp_mail('you@example.com', "Новый платеж по заказу #$order_id", $message);
    }
}

2. Настройка адреса и текста уведомления

Замените you@example.com на нужный адрес. В тексте можно добавить любые поля заказа, например телефон, адрес, примечания.

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

1. Создайте тестовый заказ в магазине и оплатите его в режиме теста (например, с помощью платежного шлюза Sandbox).

2. Проверьте почтовый ящик, указанный в функции, на наличие письма с уведомлением.

3. Если письма нет, временно добавьте логирование:

error_log('send_custom_payment_notification triggered for order ' . $order_id);

И проверьте debug.log в папке wp-content.

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

  • Письма не отправляются: Проверьте, что функция wp_mail работает на сервере. Возможно, нужен SMTP-плагин для корректной отправки.
  • Хук не срабатывает: Убедитесь, что меняется именно статус processing. Для цифровых товаров может использоваться статус completed. В этом случае замените условие на $new_status === 'completed'.
  • Функция подключена в неверном месте: Код должен быть в functions.php активной темы или в плагине, а не в шаблоне.
  • Проблемы с кодировкой письма: Проверьте, что заголовки письма корректно задаются, особенно если добавляете HTML.

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

  • Не выполняйте тяжелые операции внутри хука (например, вызовы к внешним API лучше делать асинхронно или через WP-Cron).
  • Проверяйте тип данных заказа, чтобы не запускать код для неподходящих заказов (например, только для определённых типов товаров).
  • Используйте nonce и другие методы проверки при расширении функционала, если добавляете формы для настройки уведомлений.
  • Для более гибкой работы с уведомлениями рассмотрите использование плагинов типа Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=2wp.ru&utm_medium=article&utm_campaign=kak-ispolzovat-woocommerce-hooks-dlya-dopolnitelnogo-uvedomleniya-o-platezhe), которые оптимизируют работу почты и добавляют расширенные настройки.

Сравнение способов отправки уведомлений в WooCommerce

СпособПлюсыМинусыПример
Использование хука woocommerce_order_status_changed Прямой контроль, можно отправить любые данные Требует кодинга, может повлиять на производительность Код из статьи
Плагин для уведомлений (например, WP Mail SMTP) Простота настройки, поддержка SMTP Ограничена кастомизация логики уведомлений Настройка через админку
Вебхуки и интеграция с CRM Автоматизация, интеграция с внешними сервисами Сложность реализации, возможна задержка Отправка через wp_remote_post
Создать и использовать собственный тип записи (Custom Post Type) в WordPress с примерами кода
14.01.2026
Автоматическое отключение пингов и пингбэков в WordPress
08.03.2026
Как сделать динамические заголовки H1 в WordPress
15.04.2026
Удаление старых кэшей и оптимизация базы данных WordPress для ускорения сайта
25.02.2026
Автоматическое удаление спам-комментариев в WordPress
26.01.2026