Как использовать WooCommerce хуки для автоматизации задач

Что такое хуки в WooCommerce и зачем они нужны

WooCommerce расширяет функционал WordPress, предоставляя собственные хуки — actions и filters, с помощью которых можно вмешиваться в процесс обработки заказов, товаров, оплаты и других событий. Это позволяет автоматизировать задачи без изменения исходного кода плагина, что гарантирует совместимость с обновлениями.

Диагностика: как определить место для внедрения кода

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

  • Изучите документацию WooCommerce по хукам: официальный список хуков.
  • Включите режим отладки и логирования событий с помощью плагина Query Monitor или Debug Bar, чтобы отследить вызовы функций.
  • Используйте на локальной установке функцию do_action и apply_filters с собственными обработчиками для тестов.

Пошаговое решение: пример автоматического изменения статуса заказа после оплаты

Задача: после успешной оплаты заказа автоматически менять статус на «обрабатывается» и отправлять уведомление менеджеру.

1. Подключаем обработчик к хуку woocommerce_payment_complete

add_action('woocommerce_payment_complete', 'wpplugin_change_order_status_and_notify');
function wpplugin_change_order_status_and_notify($order_id) {
    if (!$order_id) {
        return;
    }

    $order = wc_get_order($order_id);
    if (!$order) {
        return;
    }

    // Меняем статус на 'processing'
    $order->update_status('processing', 'Автоматическое обновление статуса после оплаты.');

    // Отправляем email менеджеру
    $to = 'manager@example.com';
    $subject = 'Новый оплаченный заказ #'.$order_id;
    $message = 'Заказ #'.$order_id.' успешно оплачен и переведен в статус Обрабатывается.';
    wp_mail($to, $subject, $message);
}

2. Добавляем код в файл functions.php темы или в кастомный плагин

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

3. Тестирование

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

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

Для проверки используйте следующие методы:

  • В админке WooCommerce в разделе «Заказы» убедитесь, что статус изменился автоматически.
  • Проверьте почту менеджера на наличие уведомления.
  • Включите WP_DEBUG и WP_DEBUG_LOG в wp-config.php и при необходимости добавьте логирование внутри функции через error_log().

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

  • Функция не срабатывает: проверьте правильность имени хука и что код подключен (например, в functions.php дочерней темы).
  • Почта не отправляется: убедитесь, что на сервере настроен SMTP, или используйте плагин WP Mail SMTP.
  • Не тот статус устанавливается: проверьте, что статус поддерживается WooCommerce (список статусов можно посмотреть в документации или через wc_get_order_statuses()).
  • Конфликты с другими плагинами: временно отключите другие плагины и протестируйте работу кода.

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

  • Не используйте глобальные функции вне пространства имён, если пишете плагин — чтобы избежать конфликтов.
  • Минимизируйте объем отправляемых писем — добавляйте проверки, чтобы не дублировать уведомления.
  • Добавляйте кеширование, если в хуках есть дорогостоящие операции (например, запросы к внешним API).
  • Используйте wp_mail() с правильными заголовками для корректной доставки.
  • Размещайте код в специализированных плагинах, а не в functions.php, если планируете перенос или распространение.

Сравнение вариантов реализации автоматизации задач в WooCommerce

МетодПлюсыМинусыПример
Использование хуков (actions/filters)Гибко, нативно, без сторонних зависимостейТребует знаний PHP, возможны конфликтыКод выше
Плагины автоматизации (например, AutomateWoo)Удобный интерфейс, много готовых сценариевПлатные, дополнительная нагрузкаАвтоматизация без кода
Внешние сервисы через WebhooksИнтеграция с CRM, внешними APIЗависимость от внешних сервисовНастройка в WooCommerce > Settings > Advanced
Как использовать фильтр woocommerce_order_item_product для добавления пользовательских данных к товарам заказа в WooCommerce
19.06.2026
Оптимизация базы данных WordPress для ускорения сайта
27.11.2025
Как добавить поддержку многоязычности в своем WordPress плагине
13.12.2025
Как добавить автоматический отзыв на страницу товара WooCommerce с помощью AJAX
23.03.2026
Как использовать WooCommerce хуки для автоматизации задач
15.06.2026