Что такое хук woocommerce_thankyou и где он применяется
Хук woocommerce_thankyou срабатывает после успешного оформления заказа в WooCommerce. Его основное назначение — запускать пользовательские функции сразу после того, как покупатель оплатил заказ и попал на страницу благодарности. Это идеальное место для выполнения дополнительных действий, например, отправки кастомных уведомлений, интеграции с CRM, изменения метаданных заказа или автоматического создания связанных записей.
Диагностика проблемы: почему мой код на thankyou не срабатывает
Если вы добавили функцию на хук woocommerce_thankyou, но она не выполняется, проверьте следующее:
- Правильное подключение к хуку с помощью
add_action('woocommerce_thankyou', 'ваша_функция', 10, 1); - Функция принимает параметр
$order_id(важно для доступа к данным заказа) - Нет фатальных ошибок или конфликтов с другими плагинами
- Оформление заказа действительно завершено (статус заказа должен быть «processing» или «completed»)
Пошаговое решение: пример автоматической отправки кастомного email после оформления заказа
Добавим код в functions.php вашей темы или в кастомный плагин:
add_action('woocommerce_thankyou', 'send_custom_email_after_order', 10, 1);
function send_custom_email_after_order($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if (!$order) return;
// Проверяем статус заказа
if (!in_array($order->get_status(), array('processing', 'completed'))) return;
// Получаем email покупателя
$to = $order->get_billing_email();
$subject = 'Спасибо за ваш заказ!';
$message = 'Ваш заказ #'. $order_id .' успешно получен и обрабатывается.';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}Этот код отправит простой HTML email с благодарностью покупателю сразу после оформления заказа.
Проверка результата после внедрения
- Оформите тестовый заказ на сайте с реальным email, к которому у вас есть доступ.
- Проверьте папку входящих и спама у получателя — должно прийти письмо с темой «Спасибо за ваш заказ!».
- Включите логирование ошибок PHP (через
wp-config.php) для отлова возможных ошибок в коде.
Частые ошибки и как их исправить
- Не передается ID заказа: убедитесь, что функция принимает параметр
$order_idи что он не пустой. - Письмо не отправляется: проверьте корректность настроек почты на сервере, используйте плагины типа WP Mail SMTP для теста.
- Код не вызывается: проверьте правильность подключения хука, не конфликтует ли код с другими плагинами, отключите кеширование на страницах оформления заказа.
- Функция запускается несколько раз: возможно, хук подключен в нескольких местах или с разным приоритетом — проверьте дублирование.
Практические советы по безопасности и производительности
- Используйте
wc_get_orderдля получения объекта заказа, а не прямой запрос к базе. - Ограничивайте действия только для нужных статусов заказа, чтобы не нагружать сервер лишними вызовами.
- Для сложных интеграций используйте очередь задач (wp-cron или сторонние очереди), чтобы не замедлять страницу благодарности.
- Проверяйте и фильтруйте входящие данные, если работаете с пользовательским вводом.
Сравнение вариантов реализации автоматических действий на thankyou
| Вариант | Преимущества | Недостатки |
|---|---|---|
Хук woocommerce_thankyou (код) | Прямой доступ к заказу, гибкость, нет сторонних зависимостей | Выполняется при каждом переходе на страницу благодарности, возможна нагрузка |
| Плагин автоматизации (например, WP Remark) | Удобство настройки, готовые шаблоны действий | Может быть избыточным, зависит от обновлений плагина |
| Вебхуки WooCommerce | Хорошо подходит для интеграций с внешними сервисами | Требует настройки внешнего сервера, нет локальной обработки |