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

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

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

Как правильно связать поля WPForms с заказом WooCommerce

1. Создание пользовательских полей в WPForms

Убедитесь, что в вашей форме WPForms есть все нужные поля, которые необходимо передать в заказ. Например, создадим поле «Пожелания к заказу» с типом «Текстовое поле» и ID special_requests.

2. Добавление пользовательских метаполей к заказу WooCommerce через хук

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

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']['special_requests'])) {
        $special_requests = sanitize_text_field($_POST['wpforms']['fields']['special_requests']);
        if (!empty($special_requests)) {
            $order->update_meta_data('special_requests', $special_requests);
        }
    }
}

Обратите внимание:
$_POST['wpforms']['fields'] — массив данных формы WPForms при отправке.
– Метод update_meta_data сохраняет данные в заказ.
– Используйте sanitize_text_field для безопасности.

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

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

add_action('woocommerce_admin_order_data_after_billing_address', 'wpforms_display_custom_field_in_admin_order', 10, 1);
function wpforms_display_custom_field_in_admin_order($order) {
    $special_requests = $order->get_meta('special_requests');
    if ($special_requests) {
        echo '<p><strong>Пожелания к заказу:</strong> ' . esc_html($special_requests) . '</p>';
    }
}

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

  • Создайте тестовый заказ через форму WPForms с заполнением поля «Пожелания к заказу».
  • Зайдите в админку WooCommerce, откройте заказ и убедитесь, что поле отображается под адресом биллинга.
  • Проверьте, что в базе данных в таблице wp_postmeta для заказа есть мета-ключ special_requests с корректным значением.
  • Убедитесь, что при обновлении заказа данные сохраняются и отображаются корректно.

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

  • Данные не сохраняются в заказе: проверьте правильность ключа поля в $_POST['wpforms']['fields']['your_field_id']. Используйте инструмент разработчика браузера для просмотра отправляемых форм.
  • Поле не отображается в админке: убедитесь, что хук woocommerce_admin_order_data_after_billing_address подключен и функция вызывается без ошибок.
  • Данные не проходят в $_POST: если форма отправляется через AJAX, возможно, нужно добавить обработку через JavaScript или использовать другие хуки WPForms для перехвата данных.
  • Проблемы с безопасностью: обязательно фильтруйте данные через sanitize_text_field или другие функции sanitization WordPress.

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

  • Используйте nonce и проверки прав пользователя, если данные передаются через AJAX.
  • Минимизируйте объем сохраняемых данных, чтобы не перегружать метаданные заказа.
  • Для сложных данных (например, массивов) сериализуйте их или сохраняйте в формате JSON с помощью wp_json_encode.
  • Для удобства пользователей добавьте в форму валидацию обязательных полей, чтобы избежать пустых значений в заказах.

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

МетодПлюсыМинусыКогда использовать
Через хук woocommerce_checkout_create_orderПрямое сохранение в заказ, легко отображать в админкеТребует точной настройки и проверки ключей формыПередача небольших пользовательских данных
Обработка после отправки WPForms с WebhookГибкая интеграция с внешними сервисами и заказамиСложнее реализовать, требует стороннего сервераИнтеграция с внешними CRM и сервисами
Через пользовательские сессии и JavaScriptПодходит для динамического взаимодействияМожет быть ненадежно, зависит от клиентаДинамическое заполнение полей WooCommerce
WPForms: отладка ошибок и ведение логов в WordPress
27.02.2026
WPForms и Gravity Forms: сравнение и выбор плагина форм для WordPress
10.04.2026
WPForms и WooCommerce: автоматическая передача данных обязательных полей из формы в заказ
07.05.2026
WPForms: как создать собственный фильтр данных для форм в WordPress
06.04.2026
Отправка данных из WPForms в внешние сервисы через Webhook
17.03.2026