WooCommerce – одна из самых популярных платформ для интернет-магазинов на WordPress. Часто возникает задача массового импорта товаров из Excel или CSV-файлов, особенно при обновлении ассортимента или переносе данных из других систем. В этой статье мы рассмотрим, как настроить автоматический импорт продуктов в WooCommerce из Excel, используя готовые плагины и кастомный код.
Почему автоматический импорт продуктов важен для WooCommerce
Ручной ввод товаров – это долго и неудобно при большом ассортименте. Автоматизация позволяет:
- Экономить время при обновлении каталога;
- Минимизировать ошибки при вводе данных;
- Обеспечить регулярное обновление информации о ценах, остатках и описаниях;
- Интегрировать WooCommerce с другими системами учета и поставщиками.
Автоматический импорт особенно полезен для магазинов с большим количеством товаров и частыми изменениями.
Лучшие плагины для импорта из Excel/CSV в WooCommerce
Существует несколько надежных плагинов, которые позволяют импортировать и обновлять товары из файлов Excel или CSV:
WP All Import + WooCommerce Add-On
Очень мощный и гибкий инструмент для импорта любых данных в WordPress, включая товары WooCommerce. Позволяет настроить регулярный импорт с FTP, URL или локальных файлов.
- Поддержка кастомных полей и атрибутов;
- Возможность обновления существующих товаров по SKU;
- Интуитивный интерфейс для маппинга колонок Excel с полями WooCommerce.
Скачать и узнать больше: WP All Import на WPSHOP
Product Import Export for WooCommerce
Бесплатный и простой плагин, позволяющий импортировать и экспортировать товары через CSV. Подходит для базовых сценариев.
- Поддержка стандартных и вариативных товаров;
- Возможность планирования импортов через WP-Cron;
- Экспорт для создания шаблонов файлов импорта.
Как подготовить Excel-файл для импорта в WooCommerce
Для корректного импорта важно правильно структурировать исходный файл:
- Используйте CSV формат, так как большинство плагинов работают именно с ним;
- Обязательные колонки: SKU (уникальный артикул), Название товара, Цена, Описание;
- Дополнительно можно указать категории, теги, изображения (через URL), атрибуты и запасы;
- Если импортируете вариативные товары, нужно четко разделять главные и вариационные позиции по SKU и родительскому полю.
Пример структуры CSV:
SKU,Name,Price,Description,Category,Image
12345,Футболка красная,999,Красная футболка из хлопка,Одежда,http://example.com/image1.jpg
12346,Футболка синяя,1099,Синяя футболка из хлопка,Одежда,http://example.com/image2.jpg
Пример кастомного кода для автоматического импорта из Excel (CSV) через WP-Cron
Если вы хотите создать собственное решение без сторонних плагинов, можно использовать PHP и WP-Cron для регулярного импорта. В примере ниже показано, как загрузить CSV из указанного URL, обработать его и добавить или обновить товары в WooCommerce.
add_action('wptricks_import_products_cron', 'wptricks_import_products_from_csv');
function wptricks_import_products_from_csv() {
$csv_url = 'https://example.com/products.csv'; // URL вашего CSV файла
$response = wp_remote_get($csv_url);
if (is_wp_error($response)) {
error_log('Не удалось получить CSV файл: ' . $response->get_error_message());
return;
}
$csv_body = wp_remote_retrieve_body($response);
$lines = explode("\n", $csv_body);
$header = [];
foreach ($lines as $index => $line) {
$data = str_getcsv($line);
if ($index === 0) {
$header = $data;
continue;
}
if (count($data) != count($header)) continue; // пропускаем некорректные строки
$row = array_combine($header, $data);
if (empty($row['SKU']) || empty($row['Name'])) continue;
// Проверяем, есть ли товар с этим SKU
$existing = wc_get_product_id_by_sku($row['SKU']);
if ($existing) {
$product = wc_get_product($existing);
} else {
$product = new WC_Product_Simple();
$product->set_sku($row['SKU']);
}
$product->set_name($row['Name']);
$product->set_regular_price($row['Price']);
$product->set_description($row['Description']);
// Категории
if (!empty($row['Category'])) {
$cat_ids = [];
$categories = explode(',', $row['Category']);
foreach ($categories as $cat_name) {
$cat = get_term_by('name', trim($cat_name), 'product_cat');
if ($cat) $cat_ids[] = (int)$cat->term_id;
}
$product->set_category_ids($cat_ids);
}
// Изображение
if (!empty($row['Image'])) {
$image_id = wptricks_upload_image_from_url($row['Image']);
if ($image_id) {
$product->set_image_id($image_id);
}
}
$product->save();
}
}
// Функция загрузки изображения по URL и добавления в медиабиблиотеку
function wptricks_upload_image_from_url($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)) {
return false;
}
$file = [
'name' => basename($image_url),
'type' => mime_content_type($tmp),
'tmp_name' => $tmp,
'error' => 0,
'size' => filesize($tmp),
];
$id = media_handle_sideload($file, 0);
if (is_wp_error($id)) {
@unlink($tmp);
return false;
}
return $id;
}
// Добавляем событие в WP-Cron, если его еще нет
if (!wp_next_scheduled('wptricks_import_products_cron')) {
wp_schedule_event(time(), 'hourly', 'wptricks_import_products_cron');
}
Как настроить регулярный импорт с помощью WP All Import
Для пользователей, предпочитающих готовые решения, WP All Import позволяет настроить автоматическую загрузку и импорт товаров с минимальными усилиями.
- Загрузите плагин и активируйте WooCommerce Add-On;
- Создайте новый импорт, указав ссылку на удаленный файл CSV или Excel;
- Настройте маппинг колонок: свяжите поля файла с полями товара в WooCommerce;
- В разделе расписания включите автоматическое обновление через URL с нужной периодичностью;
- Запустите импорт и проверьте результаты.
WP All Import отлично подходит для магазинов с большим ассортиментом и необходимостью частого обновления.
Практические советы по работе с импортом товаров в WooCommerce
Чтобы избежать проблем и оптимизировать процесс, учитывайте следующие рекомендации:
- Всегда делайте резервную копию сайта и базы данных перед импортом;
- Проверяйте корректность данных в CSV, особенно SKU и цены;
- Используйте уникальные SKU для идентификации товаров при обновлении;
- Минимизируйте размер файлов и разбивайте большие импорты на части, чтобы избежать таймаутов;
- Тестируйте импорт на тестовом сервере перед запуском на боевом;
- Если используете кастомный код, логируйте ошибки для отладки.