Как создать автоматический импорт продуктов в WooCommerce с использованием REST API

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

Почему REST API — оптимальный выбор для импорта товаров в WooCommerce

WooCommerce имеет встроенный REST API, который позволяет создавать, обновлять и удалять товары программно. Использование REST API дает следующие преимущества:

  • Гибкость — можно интегрироваться с любыми внешними системами, которые умеют работать с HTTP-запросами.
  • Безопасность — работа идет через авторизованные запросы, что снижает риски несанкционированного доступа.
  • Масштабируемость — можно автоматизировать загрузку большого количества товаров, настроить периодические обновления.

Кроме того, REST API хорошо документирован и поддерживается WooCommerce, что облегчает разработку.

Настройка доступа к WooCommerce REST API

Для работы с REST API нужно создать ключи доступа:

  1. В админке WordPress перейдите в WooCommerce → Настройки → Продвинутые → REST API.
  2. Нажмите кнопку «Добавить ключ».
  3. Выберите пользователя, права (обычно «Чтение/запись») и добавьте описание.
  4. Сохраните, после чего получите Consumer Key и Consumer Secret — эти данные нужны для аутентификации.

Для выполнения запросов с PHP удобно использовать библиотеку woocommerce/wc-api-php или делать запросы через cURL.

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

Ниже пример функции wpdigest_create_product_via_api(), которая создает простой товар через REST API WooCommerce на PHP:

function wpdigest_create_product_via_api($product_data) {
    $url = 'https://example.com/wp-json/wc/v3/products';
    $consumer_key = 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    $consumer_secret = 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

    $data_string = json_encode($product_data);

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERPWD, $consumer_key . ':' . $consumer_secret);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string)
    ));

    $result = curl_exec($ch);
    curl_close($ch);

    return json_decode($result, true);
}

Пример данных для создания продукта:

$product_data = [
    'name' => 'Тестовый продукт',
    'type' => 'simple',
    'regular_price' => '199.99',
    'description' => 'Описание тестового продукта',
    'categories' => [
        [ 'id' => 15 ]
    ],
    'images' => [
        [ 'src' => 'https://example.com/wp-content/uploads/product-image.jpg' ]
    ]
];

Автоматизация импорта из файла CSV или внешнего API

Часто данные для импорта приходят в формате CSV или из внешнего API поставщика. Чтобы автоматизировать импорт:

  • Напишите скрипт, который парсит CSV или делает запрос к API и преобразует данные в формат, подходящий для WooCommerce REST API.
  • Для импорта большого количества товаров используйте пакетную загрузку — создавайте товары частями.
  • Настройте cron-задачу на сервере для регулярного запуска скрипта (например, раз в сутки).

Пример парсинга CSV и отправки через REST API частями:

function wpdigest_import_products_from_csv($csv_file_path) {
    if (!file_exists($csv_file_path)) return;

    $handle = fopen($csv_file_path, 'r');
    if (!$handle) return;

    $header = fgetcsv($handle);
    $batch = [];
    $batch_size = 10;

    while (($row = fgetcsv($handle)) !== false) {
        $item = array_combine($header, $row);

        $product_data = [
            'name' => $item['name'],
            'type' => 'simple',
            'regular_price' => $item['price'],
            'description' => $item['description'],
            // Добавьте остальные поля
        ];

        $batch[] = $product_data;

        if (count($batch) >= $batch_size) {
            foreach ($batch as $product) {
                wpdigest_create_product_via_api($product);
            }
            $batch = [];
        }
    }
    // Остаток
    foreach ($batch as $product) {
        wpdigest_create_product_via_api($product);
    }

    fclose($handle);
}

Полезные плагины для упрощения импорта и интеграции

Если не хочется писать весь код самостоятельно, можно использовать плагины, которые облегчают автоматизацию импорта:

  • WPRemark — плагин для расширенного управления товарами и их импортом.
  • OmniVideo — если нужно автоматом добавлять видеообзоры к товарам.
  • Плагины для импорта CSV, например WP All Import, с поддержкой WooCommerce.

При использовании готовых решений можно комбинировать автоматические загрузки из CSV или API с возможностями расширенного управления товарами.

Обработка ошибок и логирование при импорте продуктов

При автоматическом импорте важно отслеживать ошибки и фиксировать их для последующего анализа. Рекомендуется:

  • Логировать ответы API — успешные и ошибочные.
  • Реализовать повторную попытку для временных сбоев.
  • Отправлять уведомления администраторам при критических ошибках.

Пример логирования ответа API:

function wpdigest_log_api_response($response) {
    $log_file = __DIR__ . '/import_log.txt';
    $date = date('Y-m-d H:i:s');
    file_put_contents($log_file, "[$date] " . print_r($response, true) . "\n", FILE_APPEND);
}

Вызовите эту функцию после каждого запроса в wpdigest_create_product_via_api() для записи результата.

Итоги и рекомендации

Автоматический импорт товаров в WooCommerce через REST API — мощный способ держать магазин актуальным без лишних затрат времени. Используйте встроенный API, комбинируйте его с парсингом CSV или внешних API, и не забывайте про обработку ошибок и логирование. Для упрощения задачи рассмотрите использование проверенных плагинов, например, WPRemark.

WooCommerce: как автоматически изменять цены товаров при скидках через код
22.04.2026
Как избежать конфликтов между плагинами WordPress: проверенные методы и примеры
28.12.2025
WooCommerce: как установить лимит на количество товаров в корзине
17.04.2026
Оптимизация загрузки изображений в WordPress: эффективные методы и практические решения
25.11.2025
Как использовать хуки для отложенного выполнения кода в WordPress
07.12.2025