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

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

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

Ручное добавление товаров — это долго и неэффективно. Импорт из Excel позволяет:

  • Быстро обновлять цены и остатки;
  • Добавлять новые товары без участия администратора;
  • Сохранять структуру категорий и атрибутов;
  • Снижать вероятность ошибок при копировании данных.

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

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

1. WP All Import + WooCommerce Add-On

Это один из самых мощных инструментов для импорта любых данных в WooCommerce. Поддерживает CSV и Excel (через конвертацию в CSV). Позволяет настраивать маппинг полей, обновлять товары по ID или SKU, импортировать изображения.

Минусы: платный, требует настройки и понимания структуры данных.

2. WooCommerce Product Import Export Plugin by WebToffee

Позволяет импортировать и экспортировать товары, категории, атрибуты. Поддерживает CSV. Есть возможность запланировать импорт по расписанию, что приближает к автоматизации.

3. Import any XML or CSV File to WordPress (WP All Import) с плагином Excel to CSV Converter

Если исходный файл в Excel, его можно конвертировать в CSV и использовать WP All Import для импорта.

Создание собственного скрипта автоматического импорта Excel в WooCommerce

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

  1. Загружать и читать Excel-файл;
  2. Парсить данные и преобразовывать в массив;
  3. Создавать или обновлять товары с помощью функций WooCommerce.

Шаг 1. Подключение библиотеки для чтения Excel

Рекомендуется использовать PhpSpreadsheet. Установить через Composer:

composer require phpoffice/phpspreadsheet

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

Шаг 2. Чтение Excel-файла и парсинг данных

use PhpOffice\PhpSpreadsheet\IOFactory;

function wpplugin_read_excel($filepath) {
    $spreadsheet = IOFactory::load($filepath);
    $worksheet = $spreadsheet->getActiveSheet();
    $rows = [];
    foreach ($worksheet->getRowIterator() as $row) {
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false);
        $rowData = [];
        foreach ($cellIterator as $cell) {
            $rowData[] = $cell->getValue();
        }
        $rows[] = $rowData;
    }
    return $rows;
}

Шаг 3. Создание и обновление товаров WooCommerce

Данные из Excel нужно сопоставить с нужными полями товара, например: SKU, название, описание, цена, категория, изображения.

function wpplugin_create_or_update_product($product_data) {
    // Ищем товар по SKU
    $product_id = wc_get_product_id_by_sku($product_data['sku']);

    if ($product_id) {
        $product = wc_get_product($product_id);
    } else {
        $product = new WC_Product_Simple();
    }

    $product->set_name($product_data['name']);
    $product->set_sku($product_data['sku']);
    $product->set_description($product_data['description']);
    $product->set_regular_price($product_data['price']);

    // Установка категории
    if (!empty($product_data['category'])) {
        $cat_ids = wpplugin_get_category_ids_by_names([$product_data['category']]);
        $product->set_category_ids($cat_ids);
    }

    // Сохранение товара
    $product->save();

    // Добавление изображения
    if (!empty($product_data['image_url'])) {
        wpplugin_set_product_image($product->get_id(), $product_data['image_url']);
    }

    return $product->get_id();
}

Дополнительные функции для категорий и изображений

function wpplugin_get_category_ids_by_names($names) {
    $ids = [];
    foreach ($names as $name) {
        $term = get_term_by('name', $name, 'product_cat');
        if ($term) {
            $ids[] = $term->term_id;
        } else {
            $new_term = wp_insert_term($name, 'product_cat');
            if (!is_wp_error($new_term)) {
                $ids[] = $new_term['term_id'];
            }
        }
    }
    return $ids;
}

function wpplugin_set_product_image($product_id, $image_url) {
    $upload_dir = wp_upload_dir();
    $image_data = file_get_contents($image_url);
    $filename = basename($image_url);

    if (wp_mkdir_p($upload_dir['path'])) {
        $file = $upload_dir['path'] . '/' . $filename;
    } else {
        $file = $upload_dir['basedir'] . '/' . $filename;
    }

    file_put_contents($file, $image_data);

    $wp_filetype = wp_check_filetype($filename, null);
    $attachment = [
        'post_mime_type' => $wp_filetype['type'],
        'post_title' => sanitize_file_name($filename),
        'post_content' => '',
        'post_status' => 'inherit'
    ];

    $attach_id = wp_insert_attachment($attachment, $file, $product_id);
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata($attach_id, $file);
    wp_update_attachment_metadata($attach_id, $attach_data);

    set_post_thumbnail($product_id, $attach_id);
}

Пример полного цикла импорта из Excel

Предположим, у нас есть Excel с колонками: SKU, Name, Description, Price, Category, Image URL.

function wpplugin_import_products_from_excel($filepath) {
    $rows = wpplugin_read_excel($filepath);
    // Пропускаем заголовок
    array_shift($rows);

    foreach ($rows as $row) {
        $product_data = [
            'sku' => $row[0],
            'name' => $row[1],
            'description' => $row[2],
            'price' => $row[3],
            'category' => $row[4],
            'image_url' => $row[5],
        ];
        wpplugin_create_or_update_product($product_data);
    }
}

Как запускать импорт автоматически

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

Если хотите использовать готовые решения, обратите внимание на плагин WP Importer от WPSHOP, который поддерживает импорт из CSV и Excel, умеет обновлять товары по SKU и позволяет настроить расписание импорта.

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

  • Всегда делайте резервные копии базы перед массовым импортом.
  • Проверяйте структуру Excel-файла и соответствие колонок.
  • Используйте SKU для идентификации товаров, чтобы избежать дублирования.
  • Тестируйте импорт на тестовом сайте перед применением на боевом.

Заключение

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

Как добавить автоматическое сохранение данных через AJAX в WordPress плагине
17.02.2026
Как создать автоматический импорт товаров из CSV в WordPress
19.03.2026
Автоматический импорт продуктов из Excel в WooCommerce на WordPress
16.12.2025
Как создать автозапускаемые крон-задачи в WordPress
12.03.2026
Как использовать фильтр woocommerce_order_item_product для добавления пользовательских данных к товарам заказа в WooCommerce
19.05.2026