Как создать автоматический импорт продуктов из CSV в WooCommerce с помощью кода

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

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

Если у вас большой ассортимент товаров, или вы регулярно обновляете данные, например цены, наличие или описания, ручное редактирование займет много времени и может привести к ошибкам. Автоматизация позволяет:

  • Обновлять товары массово без вмешательства;
  • Поддерживать актуальность каталога;
  • Интегрировать данные из внешних систем (поставщики, ERP и т.д.);
  • Сократить рутинные операции и снизить вероятность ошибок.

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

Подготовка CSV-файла для импорта

Для корректного импорта нужно подготовить CSV с обязательными полями WooCommerce:

  • sku — уникальный идентификатор товара;
  • name — название товара;
  • regular_price — цена;
  • description — описание;
  • stock — количество на складе;
  • и другие по необходимости.

Важно соблюдать кодировку UTF-8 и разделитель запятая или точка с запятой, в зависимости от настроек сервера. Можно подготовить CSV в Excel, Google Sheets или специализированных программах.

Создание PHP-скрипта для импорта CSV в WooCommerce

Пример простого скрипта, который читает CSV и обновляет или создаёт товары:

<?php
// Функция wplab_import_products_from_csv
function wplab_import_products_from_csv($csv_file_path) {
    if (!file_exists($csv_file_path)) {
        return 'CSV файл не найден';
    }
    
    $handle = fopen($csv_file_path, 'r');
    if (!$handle) {
        return 'Не удалось открыть CSV файл';
    }
    
    $header = fgetcsv($handle, 1000, ',');
    if (!$header) {
        fclose($handle);
        return 'Пустой CSV файл';
    }

    // Индексы колонок
    $indexes = array_flip($header);

    while (($row = fgetcsv($handle, 1000, ',')) !== FALSE) {
        $sku = $row[$indexes['sku']];
        $name = $row[$indexes['name']];
        $price = $row[$indexes['regular_price']];
        $description = $row[$indexes['description']];
        $stock = intval($row[$indexes['stock']]);

        if (empty($sku) || empty($name)) {
            continue; // пропускаем если нет sku или имени
        }

        $product_id = wc_get_product_id_by_sku($sku);

        if ($product_id) {
            // Обновляем существующий товар
            $product = wc_get_product($product_id);
            $product->set_name($name);
            $product->set_regular_price($price);
            $product->set_description($description);
            $product->set_stock_quantity($stock);
            $product->save();
        } else {
            // Создаем новый товар
            $product = new WC_Product_Simple();
            $product->set_sku($sku);
            $product->set_name($name);
            $product->set_regular_price($price);
            $product->set_description($description);
            $product->set_stock_quantity($stock);
            $product->save();
        }
    }
    fclose($handle);
    return 'Импорт завершён успешно';
}
?>

Этот код можно запускать вручную или через WP-Cron для автоматизации. Для запуска через WP-Cron достаточно добавить задачу с вызовом wplab_import_products_from_csv($path_to_csv).

Как настроить WP-Cron для автоматического импорта

Добавьте в файл functions.php или в свой плагин следующее:

<?php
// Регистрация задачи в WP-Cron
add_action('wplab_woocommerce_import_cron', 'wplab_woocommerce_import_cron_callback');

function wplab_woocommerce_import_cron_callback() {
    $csv_path = WP_CONTENT_DIR . '/uploads/import/products.csv';
    echo wplab_import_products_from_csv($csv_path);
}

// Планируем событие, если не запланировано
if (!wp_next_scheduled('wplab_woocommerce_import_cron')) {
    wp_schedule_event(time(), 'hourly', 'wplab_woocommerce_import_cron');
}
?>

Это будет запускать импорт каждый час автоматически.

Рекомендации по плагинам для импорта CSV в WooCommerce

Если не хочется писать код, существуют готовые решения с расширенным функционалом:

  • WP CSV Importer — удобный плагин с поддержкой автоматического запуска по расписанию и тонкой настройкой сопоставления полей;
  • Product Import Export for WooCommerce — бесплатный и популярный плагин с возможностью экспорта и импорта;
  • WPRemark — плагин для проверки качества и корректности данных перед импортом.

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

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

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

  • Проверяйте корректность CSV (кодировка, структура);
  • Добавляйте логирование в свой скрипт, чтобы знать, какие товары были обработаны;
  • Обрабатывайте исключения и ошибки — например, если не удалось сохранить продукт;
  • Используйте транзакции базы данных, если это возможно, чтобы откатить изменения при критических ошибках.

Пример простого логирования в файл:

function wplab_log_import($message) {
    $log_file = WP_CONTENT_DIR . '/uploads/import/import_log.txt';
    $date = date('Y-m-d H:i:s');
    file_put_contents($log_file, "[$date] $message\n", FILE_APPEND);
}

// Вызов внутри функции импорта
wplab_log_import("Товар с SKU $sku обработан");

Заключение по автоматизации импорта CSV в WooCommerce

Автоматический импорт товаров из CSV — мощный инструмент, который помогает поддерживать актуальность каталога и экономить время. Правильно настроенный скрипт или плагин избавит вас от рутины и ошибок. Рекомендуется комбинировать программные решения с проверкой данных с помощью плагинов вроде WPRemark для обеспечения качества контента.

Если вы хотите получить готовый плагин с простым интерфейсом и автоматическим запуском импорта, обратите внимание на WP CSV Importer. Он существенно упростит работу с большими каталогами и позволит сосредоточиться на развитии бизнеса.

Как удалить неиспользуемые таксономии в WordPress
10.12.2025
Как создать автоматический импорт продуктов из CSV в WooCommerce с помощью кода
12.03.2026
Автоматическое удаление отменённых заказов WooCommerce для оптимизации базы данных
16.05.2026
Как избежать конфликтов между плагинами WordPress
23.01.2026
Удаление неиспользуемых пользовательских полей в WordPress
26.01.2026