wpforms.ru wordpress WPForms.ru

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

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

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

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

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

  • Правильно ли настроена отправка формы и есть ли ID заказа (order ID) к моменту обработки данных.
  • Используете ли вы правильные хуки для сохранения метаданных заказа.
  • Есть ли конфликты с другими плагинами, которые могут изменять обработку заказов или форм.
  • Форма не перезагружается ли после отправки, что может препятствовать сохранению данных.

Пошаговое решение: сохранение данных WPForms в метаданных заказа WooCommerce

Для примера возьмём форму WPForms с полем с ID 3 (например, поле комментария или выбор опции), которое надо сохранить в заказ.

  1. Добавьте пользовательский обработчик после отправки формы WPForms. Используйте хук wpforms_process_complete, который запускается после успешной отправки.
  2. Получите ID заказа WooCommerce. Обычно он доступен, если форма встроена на странице оформления заказа, или передавайте его через скрытое поле или сессии.
  3. Добавьте метаданные к заказу через WooCommerce API.

Пример кода в functions.php или в вашем кастомном плагине:

add_action('wpforms_process_complete', 'save_wpforms_data_to_wc_order', 10, 4);
function save_wpforms_data_to_wc_order($fields, $entry, $form_data, $entry_id) {
    // ID нужной формы
    $target_form_id = 123; // замените на ваш ID формы

    if ($form_data['id'] != $target_form_id) {
        return; // не наша форма
    }

    // Получаем ID заказа из поля формы, например, скрытого поля с ключом 'order_id'
    $order_id = isset($fields[5]['value']) ? intval($fields[5]['value']) : 0; // замените 5 на ID вашего скрытого поля

    if (!$order_id) {
        return; // Нет ID заказа
    }

    $order = wc_get_order($order_id);
    if (!$order) {
        return; // Заказ не найден
    }

    // Получаем значение нужного поля, например, поле с ID 3
    $custom_field_value = isset($fields[3]['value']) ? sanitize_text_field($fields[3]['value']) : '';

    if ($custom_field_value) {
        // Сохраняем в метаданные заказа
        $order->update_meta_data('_custom_wpforms_field', $custom_field_value);
        $order->save();
    }
}

Обратите внимание, что ID формы, полей и способ передачи ID заказа нужно настроить под ваш сценарий.

Проверка результата

  • Создайте тестовый заказ через WooCommerce с заполнением формы WPForms.
  • В админке WooCommerce откройте заказ, перейдите в «Дополнительные данные» или к метаданным через плагин типа «Advanced Custom Fields» или «WooCommerce Custom Fields».
  • Убедитесь, что метаданные _custom_wpforms_field содержат значение из формы.

Варианты передачи ID заказа в форму WPForms

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

МетодОписаниеПлюсыМинусы
Скрытое поле с передачей order ID через URLДобавить скрытое поле с параметром из URL, например ?order_id=123Просто реализоватьНе безопасно, можно подделать
Сессия PHP или кукиСохранять ID заказа в сессии, читать при отправке формыСкрыто для пользователяНужно правильно настроить сессии
Передача через JavaScriptДинамически подставлять ID заказа из JS-переменнойГибко и динамичноЗависит от правильной загрузки JS

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

  • Нет ID заказа в обработчике: Проверьте, что поле с ID заказа действительно передаётся в форму и читается в PHP.
  • Метаданные не сохраняются: Убедитесь, что вызываете $order->save() после обновления метаданных.
  • Данные формы пустые или некорректные: Используйте sanitize_text_field() и проверяйте наличие данных.
  • Конфликты плагинов: Отключите другие плагины, которые могут влиять на обработку заказов, чтобы проверить конфликт.

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

  • Не доверяйте данным из формы без проверки — всегда фильтруйте и валидируйте данные перед сохранением.
  • Для передачи ID заказа используйте nonce или другие методы защиты, чтобы избежать подделок.
  • Если данных много, не сохраняйте всё в метаданных — используйте отдельные таблицы или внешние сервисы.
  • Оптимизируйте код обработчиков, чтобы не замедлять оформление заказа.

Чек-лист для внедрения автоматического сохранения данных WPForms в WooCommerce

  • Определить ID формы и нужные поля для передачи
  • Реализовать передачу order ID в форму (скрытое поле, сессия, JS)
  • Добавить обработчик на wpforms_process_complete для сохранения данных
  • Использовать функции WooCommerce API для обновления метаданных заказа
  • Проверить работу на тестовом заказе
  • Отладить и проверить на конфликтность с другими плагинами
  • Обеспечить безопасность передачи данных
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше