Как использовать хук WooCommerce для обновления метаданных заказа при оформлении

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

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

Проверить, что метаданные не обновляются, можно через админку WooCommerce в карточке заказа или с помощью SQL-запроса к таблице wp_postmeta.

Выбор правильного хука WooCommerce для обновления метаданных

Для добавления или изменения метаданных в момент оформления заказа подходят хуки, которые вызываются после сохранения заказа, например:

  • woocommerce_checkout_update_order_meta — вызывается после создания заказа и позволяет добавить метаданные.
  • woocommerce_order_status_changed — срабатывает при изменении статуса заказа, полезно для обновления данных после оплаты.

В нашем случае используем woocommerce_checkout_update_order_meta, так как нам нужно сразу добавить данные после оформления.

Пошаговое решение: добавление метаданных через хук

Пример кода для добавления кастомного поля utm_source из сессии или cookie в метаданные заказа:

add_action('woocommerce_checkout_update_order_meta', 'wpmarketing_add_utm_source_to_order_meta');
function wpmarketing_add_utm_source_to_order_meta($order_id) {
    if (isset($_COOKIE['utm_source'])) {
        $utm_source = sanitize_text_field($_COOKIE['utm_source']);
        update_post_meta($order_id, '_utm_source', $utm_source);
    }
}

В этом примере мы берём UTM-метку из cookie и сохраняем её в метаданных с ключом _utm_source. Если данные берутся из $_SESSION или полей формы — код адаптируем соответственно.

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

  1. Оформите тестовый заказ на сайте, убедившись, что cookie utm_source установлена (например, через инструменты разработчика браузера).
  2. В админке WooCommerce откройте созданный заказ.
  3. Проверьте наличие метаданных: в разделе «Произвольные поля» должно появиться _utm_source с нужным значением.
  4. Для продвинутой проверки выполните SQL-запрос в базе: SELECT meta_value FROM wp_postmeta WHERE post_id = <order_id> AND meta_key = '_utm_source';

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

  • Метаданные не сохраняются: проверьте, что хук подключён правильно и функция вызывается. Используйте error_log для отладки.
  • Данные не корректно очищаются: всегда применяйте функции санитизации (sanitize_text_field, intval) перед сохранением.
  • Отсутствие данных в cookie или сессии: убедитесь, что данные устанавливаются корректно до оформления заказа.
  • Конфликты с плагинами кэширования: отключите кэширование на страницах оформления заказа, чтобы данные cookie передавались корректно.

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

  • Не храните в метаданных чувствительные данные без шифрования.
  • Для больших объёмов дополнительных данных используйте отдельные таблицы или внешние сервисы.
  • Минимизируйте количество вызовов update_post_meta — объединяйте данные в один вызов, если возможно.
  • Для маркетинговых данных рекомендуем использовать кеширование и асинхронную отправку в аналитику, чтобы не замедлять оформление заказа.

Сравнение способов добавления метаданных заказа

СпособПлюсыМинусыИспользование
woocommerce_checkout_update_order_metaПростой, вызывается сразу после оформленияДанные доступны только после оформленияДобавление метаданных из формы, cookie
woocommerce_order_status_changedПозволяет обновлять данные при смене статусаЗапускается позже, не подходит для первичных данныхОбновление метаданных после оплаты
Плагин с UI для метаданныхУдобство для неразработчиковЗависимость от плагина, нагрузкаРедактирование вручную
Как сделать автоматический импорт продуктов в WordPress из CSV
11.12.2025
Как удалить зависимые данные от удалённых плагинов в WooCommerce
30.04.2026
Как создать автоматический маркетинговый лендинг пейдж в WordPress
10.04.2026
Оптимизация изображений в WordPress для маркетинга: лучшие практики и примеры кода
14.12.2025
Как создать маркетинговую автоматизацию в WordPress с помощью WPGPT
10.02.2026