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

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

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

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

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

Добавьте в форму все необходимые поля, например, текстовые, селекты или чекбоксы. Обратите внимание, что для передачи данных в заказ удобно использовать уникальные метки полей (field IDs), чтобы потом обращаться к ним в коде.

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

Для автоматической передачи данных из формы в заказ WooCommerce используйте хук woocommerce_checkout_create_order. В нем вы можете получить ID отправленной формы и данные, затем записать их в мета-данные заказа.

Пример кода для передачи данных из WPForms в заказ WooCommerce

add_action('woocommerce_checkout_create_order', 'wpforms_to_woocommerce_order_meta', 20, 2); function wpforms_to_woocommerce_order_meta($order, $data) {   // Предположим, что ID формы передается через скрытое поле или сессии   if (!empty($_POST['wpforms_id']) && $_POST['wpforms_id'] == 1234) {     // Получаем данные поля с ID 5     if (!empty($_POST['wpforms']['fields'][5])) {       $custom_field_value = sanitize_text_field($_POST['wpforms']['fields'][5]);       // Сохраняем в мета заказа       $order->update_meta_data('_custom_field', $custom_field_value);     }   } }

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

3. Передавайте данные из формы на страницу оформления заказа WooCommerce

Если форма WPForms размещена отдельно от оформления заказа, нужно передать данные пользователя в сессионные переменные или через URL, а затем подтягивать их на страницу оформления заказа. Для этого используйте сессии PHP или фильтр woocommerce_checkout_get_value для подстановки значения в поля оформления.

Пример кода подстановки значений в поля оформления заказа WooCommerce

add_filter('woocommerce_checkout_get_value', 'prefill_checkout_fields_from_session', 10, 2); function prefill_checkout_fields_from_session($input, $key) {   if (isset($_SESSION['wpforms_custom_field']) && $key === 'billing_custom_field') {     return sanitize_text_field($_SESSION['wpforms_custom_field']);   }   return $input; }

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

  • Отправьте тестовую форму WPForms с заполнением кастомных полей.
  • Перейдите на страницу оформления заказа WooCommerce и проверьте, что поля автоматически заполнены (если применимо).
  • Завершите оформление заказа и в админке WooCommerce откройте заказ. Убедитесь, что метаданные заказа содержат данные из формы (см. раздел "Пользовательские данные" или через плагины просмотра мета).

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

  • Данные из формы не передаются в заказ: Проверьте правильность ID формы и полей, а также наличие данных в $_POST. Убедитесь, что хук woocommerce_checkout_create_order подключен и вызывается.
  • Поля не заполняются на странице оформления заказа: Проверьте логику передачи данных через сессии или URL. Убедитесь, что сессии запущены (session_start()).
  • Безопасность данных: Не забывайте использовать sanitize_text_field или другие функции очистки данных перед сохранением и выводом.
  • Повторное использование кода без проверки: Добавляйте проверки на существование ключей в массивах и корректность данных, чтобы избежать PHP-ошибок.

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

  • Используйте nonce WPForms для защиты от CSRF атак.
  • Сохраняйте только необходимые данные, избегая избыточных метаданных в заказах.
  • Для больших объемов данных рассмотрите хранение информации вне заказов, например, в пользовательских таблицах или отдельном хранилище.
  • Регулярно очищайте устаревшие метаданные заказов через WP-CLI или собственные скрипты.

Чек-лист для успешной интеграции WPForms и WooCommerce

  1. Создана форма WPForms с уникальными ID полей.
  2. Реализован хук woocommerce_checkout_create_order для записи данных из формы в заказ.
  3. Если форма и оформление заказа разнесены, настроена передача данных через сессии или URL.
  4. Проверена очистка и валидация данных перед сохранением.
  5. Проведено тестирование: данные корректно отображаются в заказе WooCommerce.
  6. Обеспечена безопасность и производительность решения.

Сравнение методов передачи данных из WPForms в WooCommerce

МетодПлюсыМинусыКогда использовать
Хук woocommerce_checkout_create_order с прямым доступом к $_POSTПростота, прямое сохранение данных в заказРаботает только при одновременной отправке формы и оформления заказаФорма на странице оформления заказа
Передача через сессии и фильтр woocommerce_checkout_get_valueРазнос формы и оформления, предзаполнение полейНужно управлять сессиями, сложнее поддерживатьОтдельная форма и отдельная страница оформления заказа
Использование Webhook для передачи данных во внешнюю системуГибкость, интеграция с внешними сервисамиСложность настройки, задержки, зависимость от внешних сервисовКогда нужны внешние интеграции
WPForms: динамическое заполнение списков продуктов WooCommerce в формах WordPress
11.06.2026
WPForms: ограничение количества отправок формы одним пользователем в WordPress
16.05.2026
WPForms: как создать собственный тип поля с автоматической валидацией
23.03.2026
Оптимизация производительности WPForms за счёт правильной работы с базой данных
09.02.2026
WPForms: настройка отправки формы по Email с использованием PHPMailer
16.04.2026