WooCommerce: использование хука woocommerce_ajax_add_order_note для дополнительной обработки заказов

Что такое хук woocommerce_ajax_add_order_note и зачем он нужен

В WooCommerce при добавлении заметки к заказу в админке срабатывает AJAX-запрос, который вызывает хук woocommerce_ajax_add_order_note. Этот хук позволяет выполнить дополнительную логику сразу после добавления заметки к заказу, например, отправить уведомление, обновить метаданные заказа или выполнить кастомные проверки.

Использование этого хука актуально, если нужно расширить стандартные возможности WooCommerce без изменения ядра и плагинов.

Диагностика задачи: когда нужен этот хук

Типичные сценарии использования:

  • Автоматическая отправка писем или уведомлений после добавления заметки.
  • Логирование действий оператора или пользователя.
  • Обновление статусов или метаданных в зависимости от содержания заметки.

Если при добавлении заметки заказу по AJAX нужна дополнительная логика, именно сюда стоит подключать свой код.

Пошаговое решение: как использовать woocommerce_ajax_add_order_note

1. Создание функции-обработчика

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

add_action('woocommerce_ajax_add_order_note', 'custom_after_add_order_note', 10, 2);
function custom_after_add_order_note($order_id, $note)
{
    // Проверяем, что у нас есть ID заказа и текст заметки
    if (!$order_id || empty($note)) {
        return;
    }

    // Получаем объект заказа
    $order = wc_get_order($order_id);
    if (!$order) {
        return;
    }

    // Пример: добавим пользовательское мета с временной меткой
    update_post_meta($order_id, '_last_note_added_time', current_time('mysql'));

    // Пример: логируем заметку в файл для отладки
    error_log("Заметка добавлена к заказу #{$order_id}: {$note}");

    // Здесь можно добавить любую дополнительную логику
}

2. Проверка работы

Перейдите в админку WooCommerce, откройте любой заказ и добавьте заметку в блок "Заметки к заказу". После добавления:

  • Проверьте файл debug.log (если включено логирование ошибок PHP), в нем должна быть запись с текстом заметки.
  • Проверьте метаданные заказа через базу данных или с помощью плагина типа "WP phpMyAdmin" — должно появиться поле _last_note_added_time с текущей датой и временем.

Частые ошибки при использовании woocommerce_ajax_add_order_note

  • Ошибка: функция не срабатывает
    Причина: неверное имя хука или приоритет. Убедитесь, что вы используете именно woocommerce_ajax_add_order_note и что функция подключена через add_action без опечаток.
  • Ошибка: не передаются параметры
    Проверьте, что у вас в add_action указан аргумент 2 (количество параметров), иначе функция не получит $order_id и $note.
  • Ошибка: невозможность получить объект заказа
    Иногда wc_get_order($order_id) возвращает false. Проверьте, что заказ существует и ID передается корректно.

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

Для тестирования включите WP_DEBUG и WP_DEBUG_LOG в wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

После добавления заметки перейдите в папку wp-content и откройте файл debug.log. Там должна появиться запись с вашим логом.

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

SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = {ID_заказа} AND meta_key = '_last_note_added_time';

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

  • Не выполняйте тяжелую обработку напрямую в хук — лучше запускать асинхронные задачи, например, через WP-Cron или очередь.
  • Проверяйте права пользователя, который добавляет заметку, если от этого зависит безопасность данных (например, current_user_can('edit_shop_orders')).
  • Избегайте вывода данных напрямую в AJAX-обработчиках, чтобы не нарушать формат ответа WooCommerce.
  • Логируйте только важные события, чтобы не раздувать debug.log.

Альтернативы: использование плагинов vs. собственный код

МетодПлюсыМинусы
Кастомный код с хукомГибкость, контроль, не зависит от сторонних плагиновТребует навыков, возможные ошибки при обновлениях WooCommerce
Готовые плагины для заметок и уведомленийПростота установки, поддержка разработчикаМожет нагружать сайт, не всегда подходит под специфичные задачи
Как создать собственный шорткод для вывода данных из базы WordPress
03.02.2026
Как настроить права доступа для кастомных типов записей в WordPress
11.01.2026
WooCommerce: как реализовать авторизацию через SMS без плагинов
01.07.2026
Как заблокировать и удалить злоупотребления в WooCommerce через .htaccess
02.05.2026
WooCommerce: как автоматически удалять неиспользуемые вариации товаров после продажи
23.07.2026