Работа с импортом товаров в 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, который будет:
- Загружать и читать Excel-файл;
- Парсить данные и преобразовывать в массив;
- Создавать или обновлять товары с помощью функций 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 — реальная задача, которую можно решить как с помощью готовых плагинов, так и собственных скриптов. Такой подход значительно экономит время и снижает ошибки при обновлении каталога. Используйте примеры кода из статьи как отправную точку для собственной разработки.