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

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

Часто при интеграции WPForms и WooCommerce возникает задача передать данные из кастомных полей формы в заказ, чтобы эти данные были доступны в админке и в уведомлениях. Основные причины, почему этого не происходит:

  • Отсутствие связи между полями формы и метаданными заказа.
  • Данные передаются, но не сохраняются в правильном формате.
  • Отсутствие хуков, которые обрабатывают и передают данные из WPForms в WooCommerce.

Без правильной реализации эти дополнительные поля не отображаются в заказах, что усложняет обработку и анализ заказов.

Пошаговое решение: как передать дополнительные поля из WPForms в заказ WooCommerce

1. Создайте форму в WPForms с дополнительными полями

Добавьте в форму необходимые дополнительные поля, например, input с уникальными идентификаторами, например, custom_field_1, custom_field_2.

2. Используйте хук woocommerce_checkout_create_order для сохранения данных в метаданные заказа

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

add_action('woocommerce_checkout_create_order', 'wpforms_add_custom_fields_to_order', 20, 2);
function wpforms_add_custom_fields_to_order($order, $data) {
    if (isset($_POST['wpforms']['fields']['custom_field_1'])) {
        $custom_field_1 = sanitize_text_field($_POST['wpforms']['fields']['custom_field_1']);
        $order->update_meta_data('custom_field_1', $custom_field_1);
    }
    if (isset($_POST['wpforms']['fields']['custom_field_2'])) {
        $custom_field_2 = sanitize_text_field($_POST['wpforms']['fields']['custom_field_2']);
        $order->update_meta_data('custom_field_2', $custom_field_2);
    }
}

Обратите внимание, что ключи в массиве $_POST['wpforms']['fields'] должны совпадать с ID ваших полей в форме WPForms.

3. Отобразите дополнительные поля в админке заказов WooCommerce

Чтобы видеть эти поля в админке заказов, добавьте код:

add_action('woocommerce_admin_order_data_after_billing_address', 'show_custom_fields_in_admin_order', 10, 1);
function show_custom_fields_in_admin_order($order) {
    echo '<p><strong>Дополнительное поле 1:</strong> ' . esc_html($order->get_meta('custom_field_1')) . '</p>';
    echo '<p><strong>Дополнительное поле 2:</strong> ' . esc_html($order->get_meta('custom_field_2')) . '</p>';
}

Как проверить, что данные успешно передаются

  • Отправьте тестовый заказ через форму с заполненными дополнительными полями.
  • В админке WooCommerce откройте заказ и проверьте, что в блоке с адресом доставки отображаются ваши дополнительные поля.
  • Проверьте базу данных: таблица wp_postmeta должна содержать записи с ключами custom_field_1 и custom_field_2 для соответствующего order_id.

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

  • Данные не передаются в $_POST: проверьте, что форма WPForms действительно отправляется вместе с заказом WooCommerce, и что имена полей совпадают.
  • Функция не срабатывает: убедитесь, что хук woocommerce_checkout_create_order подключен правильно, и код находится в активной теме или плагине.
  • Поля не отображаются в админке: проверьте, что вы используете правильный хук для вывода данных и что данные действительно сохранены в метаданных заказа.
  • Проблемы с безопасностью данных: всегда используйте функции фильтрации данных, например, sanitize_text_field.

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

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

Таблица сравнения способов передачи данных из WPForms в WooCommerce

МетодПлюсыМинусыКогда использовать
Хук woocommerce_checkout_create_orderПрямое сохранение в заказ, простота реализацииНужно синхронизировать имена полейПередача небольшого количества полей
Использование Webhook и APIГибкость, подходит для интеграций с внешними сервисамиСложность настройки, задержкиЕсли нужна интеграция с CRM или сторонними сервисами
Кастомные плагины для синхронизацииАвтоматизация, расширенные возможностиЗависимость от стороннего кодаНа крупных проектах с множеством форм и полей
Как подключить WPForms к платежным системам в WordPress
30.03.2026
WPForms и WooCommerce: автоматическая подстановка данных пользователя в формы
10.07.2026
Как создать собственный шорткод для WPForms в WordPress
07.11.2025
WPForms: автоматическая передача данных из формы в поля пользовательского профиля WordPress
26.06.2026
WPForms: динамические поля выбора из списка и автоподстановка значений
13.01.2026