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

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

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

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

Диагностика проблемы

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

  • Используется ли последняя версия WPForms и WooCommerce.
  • Корректно ли идентифицируются поля формы и ключи метаданных заказа.
  • Подключен ли код для передачи данных через хук woocommerce_checkout_create_order или аналогичный.
  • Отсутствуют ли ошибки PHP в логах, которые могут блокировать выполнение кода.

Пошаговое решение: передача данных из WPForms в заказ WooCommerce

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

Например, поля: phone_number, delivery_instructions.

2. Получите ID формы и именованные поля

В админке WPForms посмотрите ID вашей формы и имена полей (например, phone_number).

3. Добавьте код для передачи данных в functions.php вашей темы или создайте небольшой плагин

add_action('woocommerce_checkout_create_order', 'wpforms_to_woocommerce_order_meta', 20, 2);
function wpforms_to_woocommerce_order_meta($order, $data) {
    // Проверяем, что данные формы WPForms передаются
    if (isset($_POST['wpforms']['fields'])) {
        $fields = $_POST['wpforms']['fields'];
        // Пример передачи телефонного номера
        if (!empty($fields['phone_number'])) {
            $order->update_meta_data('phone_number', sanitize_text_field($fields['phone_number']));
        }
        // Пример передачи инструкций по доставке
        if (!empty($fields['delivery_instructions'])) {
            $order->update_meta_data('delivery_instructions', sanitize_textarea_field($fields['delivery_instructions']));
        }
    }
}

Важно: здесь предполагается, что форма WPForms встроена на странице оформления заказа и отправляет данные через POST вместе с заказом WooCommerce.

4. Выведите данные в админке WooCommerce

Чтобы видеть эти метаданные в карточке заказа, добавьте вывод в админку:

add_action('woocommerce_admin_order_data_after_billing_address', 'display_custom_order_meta_in_admin', 10, 1);
function display_custom_order_meta_in_admin($order) {
    $phone = $order->get_meta('phone_number');
    $instructions = $order->get_meta('delivery_instructions');
    if ($phone) {
        echo '<p><strong>Телефон из формы:</strong> ' . esc_html($phone) . '</p>';
    }
    if ($instructions) {
        echo '<p><strong>Инструкции по доставке:</strong> ' . nl2br(esc_html($instructions)) . '</p>';
    }
}

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

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

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

  • Форма не передаёт данные в заказ: часто из-за того, что форма WPForms не встроена на страницу оформления заказа, а используется отдельно. Решение: встроить форму именно на страницу оформления, чтобы данные передавались в одном POST-запросе.
  • Неверные имена полей: в коде указаны имена полей, которых нет в форме. Проверьте ID и имена полей через админку WPForms.
  • Отсутствие обновления метаданных: используйте $order->update_meta_data(), а не напрямую update_post_meta(), это гарантирует сохранение в объекте заказа.
  • Конфликты с другими плагинами: отключите временно сторонние плагины, чтобы проверить, не мешают ли они работе.

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

  • Обязательно фильтруйте и санитизируйте данные из формы: sanitize_text_field(), sanitize_textarea_field() и другие функции WordPress.
  • Не храните избыточные данные, только необходимые.
  • Если данные не нужно показывать клиенту, используйте meta ключи с префиксом, чтобы снизить риск утечки.
  • Проверяйте нагрузку на сервер, если форма пользуется большой популярностью — кэшируйте страницы без формы и оптимизируйте запросы.

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

МетодОписаниеПлюсыМинусы
Кастомный код через хук woocommerce_checkout_create_orderПередача данных из формы, встроенной на страницу оформления заказаГибкость, полный контроль, без сторонних плагиновНужно самостоятельно писать и поддерживать код
Плагины интеграции WPForms и WooCommerceГотовые решения для передачи данныхПростота настройкиМожет быть дорого, лишний вес сайта, не всегда гибко
Передача через webhook и внешние сервисыОтправка данных формы в CRM или сервис, синхронизация с WooCommerceМногофункционально, подходит для сложных сценариевСложность настройки, требует сторонних сервисов
WPForms и WooCommerce: автоматическая передача данных обязательных полей из формы в заказ
07.05.2026
WPForms и WooCommerce: как добавить поля корзины и автоматически передавать их в заказ
13.05.2026
WPForms динамические поля с построением зависимых списков в WordPress
09.12.2025
WPForms отладка выполнения формы при ошибках в JavaScript
14.03.2026
WPForms и WooCommerce: как передать дополнительные поля из формы в заказ
14.06.2026