Использование хука WooCommerce после завершения заказа для кастомных действий

WooCommerce предоставляет множество хуков, которые позволяют расширять стандартный функционал интернет-магазина. Один из самых полезных и востребованных хуков — woocommerce_thankyou, который срабатывает после успешного завершения заказа. В этой статье подробно рассмотрим, как использовать этот хук для решения практических задач, с примерами кода и рекомендациями по плагинам.

Что такое хук woocommerce_thankyou и где он используется

Хук woocommerce_thankyou вызывается на странице «Спасибо за заказ» после успешной оплаты. Он передает ID заказа и позволяет выполнить любые дополнительные действия, например, отправить кастомные уведомления, интегрироваться с внешними сервисами, обновить метаданные заказа и многое другое.

Так как этот хук срабатывает единожды после оплаты, его удобно использовать для:

  • отправки нестандартных email-уведомлений,
  • автоматической генерации промокодов,
  • обновления пользовательских метаданных,
  • интеграции с CRM или складским учетом,
  • запуска кастомной логики по бизнес-процессам.

Пример использования хука woocommerce_thankyou для отправки кастомного email

Рассмотрим простой пример, как отправить дополнительное письмо клиенту после завершения заказа. Для этого добавим следующий код в файл functions.php вашей темы или в кастомный плагин:

add_action('woocommerce_thankyou', 'wp2wp_send_custom_email_after_order', 10, 1);
function wp2wp_send_custom_email_after_order($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    $to = $order->get_billing_email();
    $subject = 'Спасибо за покупку в нашем магазине!';
    $message = 'Здравствуйте, ' . $order->get_billing_first_name() . ",\n\n" .
               'Ваш заказ #' . $order_id . ' успешно оформлен. Мы свяжемся с вами в ближайшее время.';
    $headers = array('Content-Type: text/plain; charset=UTF-8');

    wp_mail($to, $subject, $message, $headers);
}

В этом коде мы получаем объект заказа, извлекаем email покупателя и отправляем простое текстовое письмо с благодарностью. Такой подход можно расширять, добавляя HTML-разметку, вложения и прочее.

Автоматическая генерация промокода после заказа с помощью хука

Еще одна полезная задача — выдача персонального купона клиенту после покупки. Ниже пример, как создать купон и отправить его в письме:

add_action('woocommerce_thankyou', 'wp2wp_generate_coupon_after_order', 10, 1);
function wp2wp_generate_coupon_after_order($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    $user_email = $order->get_billing_email();

    // Создаем уникальный код купона
    $coupon_code = 'THANKYOU-' . strtoupper(wp_generate_password(8, false));

    // Параметры купона
    $coupon = new WC_Coupon();
    $coupon->set_code($coupon_code);
    $coupon->set_discount_type('percent');
    $coupon->set_amount(10); // 10% скидка
    $coupon->set_individual_use(true);
    $coupon->set_email_restrictions(array($user_email));
    $coupon->set_usage_limit(1);
    $coupon->set_date_expires(strtotime('+30 days'));
    $coupon->save();

    // Отправляем купон клиенту
    $to = $user_email;
    $subject = 'Ваш персональный промокод на следующую покупку';
    $message = "Спасибо за покупку! Используйте купон $coupon_code для скидки 10% при следующем заказе. Купон действует 30 дней.";
    $headers = array('Content-Type: text/plain; charset=UTF-8');

    wp_mail($to, $subject, $message, $headers);
}

Этот код создает купон с уникальным кодом, ограниченный одним использованием, привязанный к email клиента, и отправляет его письмом. Такой подход отлично подходит для повышения лояльности.

Рекомендации по плагинам для расширения функционала после оплаты

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

  • WooCommerce Follow-Ups — позволяет создавать автоматические цепочки email и SMS после покупки.
  • AutomateWoo — мощный инструмент для триггерных уведомлений и автоматизации маркетинга.
  • WPShop My Popup — можно использовать для показа всплывающих окон с акциями и промокодами после оформления заказа.

Эти плагины можно найти на WPSHOP.RU и интегрировать в ваш магазин без глубоких знаний программирования.

Обработка ошибок и проверки при использовании хука

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

  • Проверять статус заказа ($order->get_status()), чтобы не запускать логику для отмененных или черновых заказов.
  • Использовать логирование ошибок через error_log() или плагины для отладки.
  • Тестировать на разных типах оплат и сценариях оформления.

Пример проверки статуса заказа:

if ($order->get_status() !== 'completed') {
    return;
}

Как интегрировать кастомные действия в тему или плагин

Чтобы не потерять изменения при обновлении темы, лучше всего создавать отдельный плагин для кастомных функций. Минимальный шаблон плагина:

/*
Plugin Name: WP2WP WooCommerce Custom Actions
Description: Кастомные действия после завершения заказа WooCommerce
Version: 1.0
Author: 2wp.ru
*/

add_action('woocommerce_thankyou', 'wp2wp_send_custom_email_after_order', 10, 1);
// Здесь вставляем функции из примеров выше

Так вы надежно защитите свои доработки и сможете легко их переносить.

Заключение

Использование хука woocommerce_thankyou — это мощный инструмент для расширения функционала WooCommerce. Он позволяет запускать любые кастомные процессы после успешного оформления заказа. В статье приведены практические примеры, которые легко адаптировать под любые задачи. Кроме того, для тех, кто не хочет писать код, есть удобные плагины с аналогичным функционалом.

Создать и использовать собственный тип записи (Custom Post Type) в WordPress с примерами кода
14.01.2026
WooCommerce: как автоматически удалять заказы после оплаты
13.05.2026
Как использовать хук WooCommerce 'woocommerce_order_status_changed' для отправки дополнительных уведомлений
21.04.2026
Автоматическое переключение языка в WordPress по геолокации
07.01.2026
Как запретить доступ к определённому контенту по ролям в WordPress
19.01.2026