wpforms.ru wordpress WPForms.ru

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

Почему возникает задача автоматического создания заказов из WPForms

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

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

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

  • Подключен ли WooCommerce и активна ли его база данных.
  • Формируются ли данные формы корректно (проверяйте $_POST или объект формы).
  • Используется ли правильный хук для обработки отправки формы.
  • Есть ли ошибки PHP в логах при попытке создать заказ.
  • Корректно ли назначены обязательные поля для создания заказа (например, ID товара, количество, данные покупателя).

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

1. Определяем форму и обрабатываем событие отправки

WPForms имеет хук wpforms_process_complete, который запускается по завершении отправки формы. Используем его для запуска логики создания заказа.

add_action('wpforms_process_complete', 'create_woocommerce_order_from_wpform', 10, 4);
function create_woocommerce_order_from_wpform($fields, $entry, $form_data, $entry_id) {
    // Проверяем ID формы, если нужно
    if ($form_data['id'] != 123) return; // заменить 123 на ID вашей формы

    // Получаем значения из полей по ключам
    $product_id = 0;
    $quantity = 1;
    $billing_email = '';
    foreach ($fields as $field) {
        switch ($field['name']) {
            case 'product_id':
                $product_id = intval($field['value']);
                break;
            case 'quantity':
                $quantity = max(1, intval($field['value']));
                break;
            case 'email':
                $billing_email = sanitize_email($field['value']);
                break;
        }
    }

    if (!$product_id || !$billing_email) return;

    // Создаём заказ
    $order = wc_create_order();
    $order->add_product(wc_get_product($product_id), $quantity);
    $order->set_billing_email($billing_email);
    $order->calculate_totals();
    $order->save();
}

2. Обработка дополнительных данных покупателя

Если форма собирает больше информации (имя, телефон, адрес), назначьте их в заказ через методы set_billing_first_name, set_billing_phone и т.д.

$order->set_billing_first_name($first_name);
$order->set_billing_phone($phone);
// Добавляйте остальные поля аналогично

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

WooCommerce автоматически отправляет уведомления о новом заказе, если они включены. Проверяйте наличие нового заказа в админке WooCommerce в разделе "Заказы" после отправки тестовой формы.

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

  • Отправьте тестовую форму WPForms с валидными данными.
  • Зайдите в WooCommerce > Заказы и убедитесь, что появился новый заказ с введёнными данными.
  • Проверьте, что сумма, количество и данные покупателя заполнены корректно.
  • Если включены email-уведомления — проверьте их получение.

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

  • Заказы не создаются: пропущена проверка ID формы или нет обязательных данных (product_id, email). Проверьте соответствие полей формы и кода.
  • Ошибки PHP при создании заказа: убедитесь, что WooCommerce активен и функции доступны. Включите WP_DEBUG и смотрите логи.
  • Неверные данные в заказе: проверьте правильность индексов полей и их названий в форме WPForms.
  • Заказы создаются, но не отправляются письма: проверьте настройки WooCommerce, SMTP и логи отправки почты.

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

  • Используйте фильтрацию и санитизацию данных из формы перед использованием в заказе (sanitize_email, intval, sanitize_text_field).
  • Обрабатывайте только нужные формы, чтобы не создавать лишние заказы.
  • Добавьте логгирование ошибок создания заказов для отладки (например, через error_log или плагины логирования).
  • Если планируется массовое создание заказов, оптимизируйте код, избегайте лишних запросов к базе.

Сравнение вариантов автоматического создания заказов из WPForms

МетодПлюсыМинусыКомпромисс
Кастомный PHP-код на хуке wpforms_process_completeПолный контроль, гибкость, без сторонних плагиновТребуется знание PHP, возможны ошибки, поддержка на васМожно начать с простого кода и расширять
Плагины интеграции WPForms-WooCommerce (если есть)Упрощённая настройка, готовые функцииМогут быть платными и ограниченными, зависят от разработчикаИспользовать для типовых задач, кастомизировать кодом
Использование Webhook и внешних сервисовОтделение логики, интеграция с CRM и ERPЗадержки, возможны ошибки при передаче, сложностьДля крупных проектов с внешним учётом заказов
×

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

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

пишет статьи

готовит SEO

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

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