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

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

Частая задача при разработке на WooCommerce — добавить дополнительные данные к заказу во время оформления. Например, сохранить пользовательские поля, данные доставки или особые инструкции. Если не использовать правильный хук, данные могут не сохраниться в заказе, из-за чего они не будут доступны в админке или для последующей обработки.

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

1. Создаем поле в форме оформления заказа

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

add_action('woocommerce_after_order_notes', 'wpmarket_add_custom_checkout_field');
function wpmarket_add_custom_checkout_field( $checkout ) {
    echo '<div id="wpmarket_custom_checkout_field">';
    woocommerce_form_field( 'custom_note', array(
        'type'          => 'text',
        'class'         => array('form-row-wide'),
        'label'         => __('Дополнительная заметка'),
        'placeholder'   => __('Введите текст'),
        'required'      => false,
    ), $checkout->get_value( 'custom_note' ) );
    echo '</div>';
}

2. Сохраняем данные в мета заказа с помощью хука woocommerce_checkout_update_order_meta

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

add_action( 'woocommerce_checkout_update_order_meta', 'wpmarket_save_custom_checkout_field' );
function wpmarket_save_custom_checkout_field( $order_id ) {
    if ( ! empty( $_POST['custom_note'] ) ) {
        update_post_meta( $order_id, '_custom_note', sanitize_text_field( $_POST['custom_note'] ) );
    }
}

3. Отображаем данные в админке заказа

Чтобы видеть сохраненное поле в админке WooCommerce, добавим его в метаблок заказа:

add_action( 'woocommerce_admin_order_data_after_billing_address', 'wpmarket_display_custom_field_admin_order', 10, 1 );
function wpmarket_display_custom_field_admin_order( $order ) {
    $custom_note = get_post_meta( $order->get_id(), '_custom_note', true );
    if ( $custom_note ) {
        echo '<p><strong>Дополнительная заметка:</strong> ' . esc_html( $custom_note ) . '</p>';
    }
}

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

  • Перейдите на страницу оформления заказа на сайте.
  • Заполните поле «Дополнительная заметка» и оформите заказ.
  • В админке WooCommerce откройте созданный заказ.
  • В разделе с данными покупателя найдите и проверьте отображение введённого текста.

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

  • Поле не отображается на странице оформления заказа: проверьте, правильно ли подключен хук woocommerce_after_order_notes, и активна ли тема/плагин с кодом.
  • Данные не сохраняются в заказе: убедитесь, что в $_POST['custom_note'] приходит значение, и вызван update_post_meta с корректным ID заказа.
  • Данные не видны в админке: проверьте правильность хука woocommerce_admin_order_data_after_billing_address и что функция получает объект заказа.

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

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

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

МетодПреимуществаНедостатки
Хук woocommerce_checkout_update_order_metaПростая интеграция, сохраняет данные сразу после оформленияНе подходит для асинхронных данных, нужен правильный вызов
Использование AJAX на странице оформленияМожно динамически обновлять данные без перезагрузкиСложнее в реализации, требует дополнительного JS и безопасности
Собственные таблицы в базеПодходит для сложных структур данных, увеличивает производительность при больших объемахТребует дополнительной разработки и миграции, сложнее поддерживать
Автоматический экспорт товаров WooCommerce в CSV с помощью кода
11.02.2026
Как использовать хук woocommerce_checkout_update_order_meta для добавления данных к заказу в WooCommerce
18.05.2026
Как использовать REST API для создания приложений на WordPress
05.12.2025
Как исключить товар из показа и поисковой индексации в WooCommerce
06.05.2026
Как создать адаптивный блок товара в WooCommerce с помощью хуков
05.01.2026