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

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

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

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

Задача разбивается на два этапа:

  • вывод дополнительного поля на страницу оформления заказа;
  • сохранение введенного значения в метаданные заказа.

Добавление поля с помощью хука woocommerce_after_order_notes

Пример добавления текстового поля "Дополнительная информация":

add_action('woocommerce_after_order_notes', 'wplock_add_custom_checkout_field');
function wplock_add_custom_checkout_field($checkout) {
    echo '<div id="wplock_custom_checkout_field">';
    woocommerce_form_field('wplock_custom_field', array(
        'type'          => 'text',
        'class'         => array('wplock-custom-field form-row-wide'),
        'label'         => __('Дополнительная информация'),
        'placeholder'   => __('Введите дополнительную информацию'),
        'required'      => false,
    ), $checkout->get_value('wplock_custom_field'));
    echo '</div>';
}

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

Используем хук woocommerce_checkout_update_order_meta:

add_action('woocommerce_checkout_update_order_meta', 'wplock_save_custom_checkout_field');
function wplock_save_custom_checkout_field($order_id) {
    if (!empty($_POST['wplock_custom_field'])) {
        update_post_meta($order_id, '_wplock_custom_field', sanitize_text_field($_POST['wplock_custom_field']));
    }
}

Отображение значения поля в админке WooCommerce

Чтобы администратор видел введенную информацию в заказе, добавим вывод в метабоксе заказа:

add_action('woocommerce_admin_order_data_after_billing_address', 'wplock_display_custom_field_admin_order', 10, 1);
function wplock_display_custom_field_admin_order($order){
    $custom_field = get_post_meta($order->get_id(), '_wplock_custom_field', true);
    if ($custom_field) {
        echo '<p><strong>' . __('Дополнительная информация') . ':</strong> ' . esc_html($custom_field) . '</p>';
    }
}

Пошаговое решение

  1. Добавьте все три блока кода в файл functions.php вашей дочерней темы или в собственный плагин.
  2. Откройте страницу оформления заказа и убедитесь, что поле «Дополнительная информация» отображается ниже стандартных заметок.
  3. Заполните поле и завершите заказ.
  4. В админке WooCommerce откройте созданный заказ и проверьте, что дополнительная информация отображается в блоке данных о заказе.

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

  • На фронтенде поле доступно и принимает ввод.
  • Значение сохраняется и не теряется при отправке формы.
  • В админке WooCommerce при просмотре заказа отображается введённая информация.
  • Данные корректно обрабатываются при повторном редактировании заказа (если это предусмотрено).

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

  • Поле не отображается: проверьте правильность имени функции и подключения хука woocommerce_after_order_notes. Иногда тема или плагин изменяют шаблон оформления заказа, и хук не срабатывает.
  • Данные не сохраняются: убедитесь, что имя поля в $_POST совпадает с именем, используемым в woocommerce_form_field и в функции сохранения.
  • Данные не отображаются в админке: проверьте, что используете правильный хук woocommerce_admin_order_data_after_billing_address и корректно получаете метаданные заказа.
  • Санитизация данных: всегда используйте sanitize_text_field или другие функции для очистки данных перед сохранением, чтобы избежать проблем с безопасностью.

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

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

Сравнение способов добавления полей в WooCommerce

МетодПлюсыМинусыКогда использовать
Добавление через хуки (как в статье)Простота, не требует модификации шаблонов, гибкостьЗависит от темы/плагинов, может не работать при кастомных шаблонахСтандартные темы, небольшие изменения
Изменение шаблонов оформления заказаПолный контроль над разметкой и логикойТребует поддержки при обновлениях, сложнееКрупные кастомизации, уникальный дизайн
Плагины для кастомизации CheckoutГотовое решение, часто с UIЗависимость от стороннего кода, нагрузкаБез навыков программирования, быстрые правки
Как удалить неактивные комментарии в WordPress: эффективные способы очистки базы
03.02.2026
Как отключить комментарии на отдельных страницах WordPress
06.02.2026
Как автоматизировать удаление старого контента в WordPress
31.03.2026
WooCommerce: как добавить дополнительное поле в форму оформления заказа и сохранить данные
12.06.2026
Как автоматизировать обновление контента в WordPress с помощью WPRemark
25.01.2026