Автоматический импорт заказов WooCommerce: практическое руководство

Автоматический импорт заказов в WooCommerce — полезная функция для интернет-магазинов с внешними системами учета, маркетплейсами или CRM. В этой статье расскажу, как создать собственный механизм импорта заказов из CSV-файлов или API, а также приведу примеры кода и рекомендации по плагинам для автоматизации.

Почему нужен автоматический импорт заказов в WooCommerce

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

Типичные кейсы:

  • Импорт заказов из CRM-системы по расписанию
  • Импорт заказов из маркетплейсов, которые выгружают CSV или JSON
  • Объединение заказов из нескольких источников в WooCommerce

Инструменты и плагины для импорта заказов

Для начала рассмотрим готовые решения, которые можно использовать или взять за основу.

  • WP Export Import — мощный плагин для импорта и экспорта заказов, клиентов и товаров. Поддерживает CSV, XML, планировщик задач.
  • Clearfy Pro — оптимизация и автоматизация WooCommerce, есть функции для импорта и очистки данных.
  • WooCommerce REST API — стандартный инструмент для интеграции и импорта заказов через HTTP-запросы.

Если нужен кастомный импорт, лучше написать собственный скрипт на PHP с использованием хуков WooCommerce и WPUnit.

Как написать автоматический импорт заказов из CSV в WooCommerce: пример кода

Рассмотрим пример функции для импорта заказов из CSV с основными полями. Код можно поместить в отдельный плагин или в functions.php темы.

function wpunit_import_orders_from_csv($csv_file_path) {
    if (!file_exists($csv_file_path)) {
        error_log('CSV файл не найден: ' . $csv_file_path);
        return;
    }

    if (($handle = fopen($csv_file_path, 'r')) !== false) {
        $header = fgetcsv($handle, 1000, ',');
        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            $row = array_combine($header, $data);
            // Создаем заказ
            $order = wc_create_order();
            $order->set_billing_email($row['billing_email']);
            $order->set_billing_first_name($row['billing_first_name']);
            $order->set_billing_last_name($row['billing_last_name']);
            $order->set_billing_address_1($row['billing_address_1']);
            $order->set_payment_method($row['payment_method']);
            $order->set_status('processing');

            // Добавляем товары
            $items = json_decode($row['items'], true); // Ожидаем JSON с товарами [{"product_id":123,"quantity":2}, ...]
            if ($items) {
                foreach ($items as $item) {
                    $product = wc_get_product($item['product_id']);
                    if ($product) {
                        $order->add_product($product, $item['quantity']);
                    }
                }
            }

            $order->calculate_totals();
            $order->save();
        }
        fclose($handle);
    }
}

Важно: формат CSV должен быть согласован, например, колонка items содержит JSON-массив товаров с ID и количеством. Такой подход универсален и расширяем.

Запуск импорта по расписанию с WP-Cron

Чтобы импорт происходил автоматически, можно запланировать задачу с помощью WP-Cron:

function wpunit_schedule_import() {
    if (!wp_next_scheduled('wpunit_import_orders_event')) {
        wp_schedule_event(time(), 'hourly', 'wpunit_import_orders_event');
    }
}
add_action('wp', 'wpunit_schedule_import');

add_action('wpunit_import_orders_event', function() {
    wpunit_import_orders_from_csv(ABSPATH . 'wp-content/uploads/orders_import.csv');
});

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

Импорт заказов через WooCommerce REST API

Если заказы приходят из внешней системы, которая поддерживает API, можно принимать их через REST API WooCommerce. Вот пример как создать заказ через запрос:

POST /wp-json/wc/v3/orders
{
  "payment_method": "bacs",
  "payment_method_title": "Direct Bank Transfer",
  "set_paid": true,
  "billing": {
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com"
  },
  "line_items": [
    {
      "product_id": 93,
      "quantity": 2
    }
  ]
}

Для автоматизации можно написать PHP-скрипт, который будет принимать или запрашивать такие данные и создавать заказы программно.

Пример создания заказа через PHP с использованием REST API клиента

function wpunit_create_order_via_api($order_data) {
    $woocommerce = new Automattic\WooCommerce\Client(
        'https://example.com',
        'consumer_key',
        'consumer_secret',
        ['version' => 'wc/v3']
    );

    try {
        $order = $woocommerce->post('orders', $order_data);
        return $order;
    } catch (Exception $e) {
        error_log('Ошибка создания заказа: ' . $e->getMessage());
        return false;
    }
}

Рекомендации по безопасности и производительности

При автоматическом импорте важно учитывать безопасность:

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

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

  • Обрабатывать импорт пакетами, чтобы не перегружать сервер
  • Использовать планировщик WP-Cron с разумным интервалом
  • Кэшировать частые запросы по необходимости

Выводы и полезные ссылки

Автоматический импорт заказов в WooCommerce позволяет оптимизировать работу интернет-магазина и интегрироваться с внешними системами. Выбор между готовыми плагинами и собственными разработками зависит от конкретных задач и ресурсов.

Рекомендую ознакомиться с плагином WP Export Import для быстрого старта и использовать приведенные примеры кода как основу для кастомных решений.

Как создать и использовать кастомные роли и права в WordPress
05.01.2026
Правильное удаление неактивных пользователей WordPress с примером кода
30.04.2026
Как создать собственный объект метаданных в WordPress для расширенного хранения данных
19.03.2026
Как автоматически отключать изображения в WordPress при отказах от загрузки
24.01.2026
Как использовать REST API для автоматического создания и обновления товаров WooCommerce
20.04.2026