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

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

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

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

  • Обновлять цены и наличие товаров без ручного вмешательства.
  • Импортировать новые позиции из прайс-листов поставщиков.
  • Поддерживать актуальность каталога на сайте.

Это особенно важно для магазинов с большим ассортиментом и частыми изменениями.

Обзор популярных плагинов для импорта CSV в WooCommerce

Существует несколько проверенных плагинов, которые значительно упрощают импорт товаров из CSV:

  • WP All Import + WooCommerce Add-On — мощный инструмент с поддержкой сложных правил импорта и обновления.
  • Product CSV Import Suite от WooCommerce — официальный плагин с удобным интерфейсом и поддержкой кастомных полей.
  • CSV Importer for WooCommerce — бесплатный плагин для базового импорта, подходит для простых задач.

Все эти плагины позволяют настроить периодический импорт с помощью Cron, но для более гибкой настройки можно использовать собственные решения на PHP.

Настройка автоматического импорта CSV через WP Cron и PHP

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

function wpmax_import_products_from_csv() {
    $csvFile = fopen(ABSPATH . 'wp-content/uploads/products.csv', 'r');
    if (!$csvFile) return;
    $header = fgetcsv($csvFile);
    while (($row = fgetcsv($csvFile)) !== false) {
        $data = array_combine($header, $row);

        // Проверяем, существует ли товар по SKU
        $existing_product_id = wc_get_product_id_by_sku($data['sku']);
        if ($existing_product_id) {
            $product = wc_get_product($existing_product_id);
        } else {
            $product = new WC_Product_Simple();
            $product->set_sku($data['sku']);
        }

        $product->set_name($data['name']);
        $product->set_regular_price($data['price']);
        $product->set_stock_quantity($data['stock']);
        $product->set_description($data['description']);
        $product->save();
    }
    fclose($csvFile);
}

add_action('wpmax_cron_import_csv', 'wpmax_import_products_from_csv');

if (!wp_next_scheduled('wpmax_cron_import_csv')) {
    wp_schedule_event(time(), 'hourly', 'wpmax_cron_import_csv');
}

В этом коде мы:

  • Открываем CSV файл из папки uploads.
  • Читаем заголовки и строки, создаём или обновляем товары по SKU.
  • Обновляем название, цену, количество и описание.
  • Запускаем функцию каждый час через WP Cron.

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

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

Для корректной работы импорта необходимо следовать некоторым рекомендациям:

  • Обязательно наличие уникального ключа для товара, например, SKU.
  • Все заголовки столбцов должны быть понятными и совпадать с полями товара, например: sku, name, price, stock, description.
  • Избегайте пустых строк и ячеек, это может привести к ошибкам.
  • Если импортируете изображения, указывайте в CSV полный URL или относительный путь к файлу.

Для сложных товаров (вариаций) структура CSV должна быть более продуманной, и рекомендуется использовать специализированные плагины.

Как интегрировать импорт с плагином Clearfy Pro для оптимизации

Плагин Clearfy Pro помогает оптимизировать работу WooCommerce и WordPress в целом, что особенно важно при больших объемах импорта:

  • Отключение ненужных скриптов и стилей для ускорения работы сайта.
  • Оптимизация базы данных и очистка временных данных.
  • Управление Cron задачами для предотвращения конфликтов.

Используйте Clearfy Pro вместе с кастомным импортом для стабильной и быстрой работы магазина.

Пример расширения импорта с обработкой категорий и изображений

Для добавления категорий и загрузки изображений можно расширить функцию следующим образом:

function wpmax_import_products_from_csv() {
    $csvFile = fopen(ABSPATH . 'wp-content/uploads/products.csv', 'r');
    if (!$csvFile) return;
    $header = fgetcsv($csvFile);
    while (($row = fgetcsv($csvFile)) !== false) {
        $data = array_combine($header, $row);
        $existing_product_id = wc_get_product_id_by_sku($data['sku']);
        if ($existing_product_id) {
            $product = wc_get_product($existing_product_id);
        } else {
            $product = new WC_Product_Simple();
            $product->set_sku($data['sku']);
        }
        $product->set_name($data['name']);
        $product->set_regular_price($data['price']);
        $product->set_stock_quantity($data['stock']);
        $product->set_description($data['description']);

        // Установка категории
        if (!empty($data['category'])) {
            $cat_id = term_exists($data['category'], 'product_cat');
            if (!$cat_id) {
                $cat_id = wp_insert_term($data['category'], 'product_cat');
            }
            if (!is_wp_error($cat_id)) {
                $product->set_category_ids(array($cat_id['term_id']));
            }
        }

        $product_id = $product->save();

        // Загрузка изображения из URL
        if (!empty($data['image_url'])) {
            $image_id = wpmax_upload_image_from_url($data['image_url'], $product_id);
            if ($image_id) {
                set_post_thumbnail($product_id, $image_id);
            }
        }
    }
    fclose($csvFile);
}

function wpmax_upload_image_from_url($image_url, $post_id) {
    require_once(ABSPATH . 'wp-admin/includes/file.php');
    require_once(ABSPATH . 'wp-admin/includes/media.php');
    require_once(ABSPATH . 'wp-admin/includes/image.php');

    $tmp = download_url($image_url);
    if (is_wp_error($tmp)) return false;

    $file_array = array(
        'name' => basename($image_url),
        'tmp_name' => $tmp
    );

    $id = media_handle_sideload($file_array, $post_id);

    if (is_wp_error($id)) {
        @unlink($file_array['tmp_name']);
        return false;
    }
    return $id;
}

Этот код автоматически создаст категории, если их нет, и прикрепит главное изображение к товару.

Выводы и рекомендации

Создание автоматического импорта товаров в WooCommerce из CSV файла — задача решаемая как с помощью готовых плагинов, так и собственными скриптами. Использование WP Cron позволит запускать импорт по расписанию, а расширение с загрузкой изображений и созданием категорий сделает процесс максимально удобным.

Для повышения производительности и безопасности сайта советуем использовать Clearfy Pro, который оптимизирует работу WordPress и WooCommerce.

Если вы хотите более простое решение, обратите внимание на WP All Import с аддоном для WooCommerce — это мощный инструмент с понятным интерфейсом и множеством настроек.

Как автоматизировать создание резервных копий WordPress с помощью WPMax
23.01.2026
Автоматическое удаление старых записей в WordPress
01.03.2026
Как изменить функции WooCommerce без изменения основных файлов WordPress
18.11.2025
WooCommerce: как отключить автоматическое обновление статуса заказов
30.04.2026
WooCommerce: как полностью отключить отмену заказов через личный кабинет
04.05.2026