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

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

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

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

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

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

Плагины для автоматического импорта CSV в WooCommerce

Существуют специализированные плагины, которые умеют импортировать CSV по расписанию и поддерживают разные форматы. Рассмотрим наиболее популярные:

1. WP All Import + WooCommerce Add-On

Очень мощный плагин для импорта любых данных в WordPress и WooCommerce. Позволяет настроить импорт по расписанию через WP-Cron, поддерживает сложные сопоставления полей, вариативные товары, изображения.

Настройка расписания импортов делается в интерфейсе, можно указать URL файла CSV или загружать вручную.

Ссылка для изучения и покупки: WP All Import на WPShop

2. Product CSV Import Suite

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

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

3. WP Ultimate CSV Importer

Многофункциональный импортер с поддержкой WooCommerce. Позволяет создавать расписания импорта, обрабатывать любые поля и настраивать обновление товаров.

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

Если вы хотите реализовать импорт самостоятельно, можно написать простой скрипт на PHP, который будет запускаться по cron или WP-Cron.

Ниже пример функции wpdemo_import_products_from_csv(), которая читает CSV и создаёт товары:

function wpdemo_import_products_from_csv() {
    $csv_file = plugin_dir_path(__FILE__) . 'import/products.csv';
    if (!file_exists($csv_file)) {
        error_log('CSV файл не найден: ' . $csv_file);
        return;
    }

    if (($handle = fopen($csv_file, 'r')) !== false) {
        $header = fgetcsv($handle, 1000, ',');
        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            $row = array_combine($header, $data);

            // Проверка обязательных полей
            if (empty($row['sku']) || empty($row['name'])) continue;

            // Проверяем есть ли товар с таким SKU
            $existing_product_id = wc_get_product_id_by_sku($row['sku']);
            
            if ($existing_product_id) {
                // Обновляем существующий товар
                $product = wc_get_product($existing_product_id);
            } else {
                // Создаём новый товар
                $product = new WC_Product_Simple();
            }

            $product->set_name($row['name']);
            $product->set_sku($row['sku']);
            $product->set_price($row['price']);
            $product->set_regular_price($row['price']);
            $product->set_stock_quantity(intval($row['stock']));
            $product->set_stock_status($row['stock'] > 0 ? 'instock' : 'outofstock');
            $product->save();
        }
        fclose($handle);
    }
}

// Добавим событие в WP-Cron для ежедневного запуска
add_action('wpdemo_daily_import', 'wpdemo_import_products_from_csv');

if (!wp_next_scheduled('wpdemo_daily_import')) {
    wp_schedule_event(time(), 'daily', 'wpdemo_daily_import');
}

В этом скрипте из CSV с колонками sku,name,price,stock импортируются или обновляются товары. Для более сложных товаров нужно расширять логику.

Обработка изображений и атрибутов при импорте

Частая задача — загрузка изображений для товаров из URL, указанных в CSV. Ниже пример функции для загрузки изображения и прикрепления к товару:

function wpdemo_import_product_image($product_id, $image_url) {
    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)) {
        error_log('Ошибка скачивания изображения: ' . $image_url);
        return;
    }

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

    // Загружаем файл в Медиатеку
    $attachment_id = media_handle_sideload($file_array, $product_id);

    if (is_wp_error($attachment_id)) {
        @unlink($tmp);
        error_log('Ошибка загрузки изображения: ' . $image_url);
        return;
    }

    // Устанавливаем главное изображение товара
    set_post_thumbnail($product_id, $attachment_id);
}

Используйте эту функцию внутри цикла импорта для каждого товара, если в CSV есть поле с URL изображения.

Импорт атрибутов и категорий

Для импорта атрибутов и категорий нужно предварительно зарегистрировать нужные таксономии в WooCommerce. Затем можно привязывать термины к товарам через функции:

$product->set_category_ids(array($category_id1, $category_id2));
$product->set_attributes(array(
    'pa_color' => array(
        'name' => 'pa_color',
        'options' => array('red', 'blue'),
        'position' => 0,
        'visible' => true,
        'variation' => false
    )
));

Подробнее про работу с атрибутами читайте в документации WooCommerce.

Резюме и рекомендации

Автоматический импорт из CSV в WooCommerce — важная задача для эффективного управления магазином. Готовые плагины, такие как WP All Import, позволяют быстро настроить импорт с минимальным кодом. Если нужен полный контроль, можно писать собственные функции на PHP, используя WP-Cron для расписания и стандартные функции WooCommerce для создания и обновления товаров.

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

Как создать свой плагин WordPress — пошаговое руководство
04.11.2025
Оптимизация базы данных WordPress: практические советы и примеры кода
07.11.2025
Как установить ограничение на число активных плагинов в WordPress
31.03.2026
Как добавить автоматическое сохранение в формы WordPress для защиты данных
20.01.2026
Как использовать AJAX для пагинации в WordPress с примерами кода
24.03.2026