Автоматизация импорта продуктов из CSV в WooCommerce — частая задача для владельцев интернет-магазинов, которые работают с большими каталогами и хотят сэкономить время на ручном добавлении товаров. В этой статье мы разберём, как настроить автоматический импорт с помощью собственного PHP-скрипта, а также рассмотрим популярные плагины, которые могут упростить процесс.
Почему важен автоматический импорт CSV в WooCommerce
Если у вас большой ассортимент товаров, или вы регулярно обновляете данные, например цены, наличие или описания, ручное редактирование займет много времени и может привести к ошибкам. Автоматизация позволяет:
- Обновлять товары массово без вмешательства;
- Поддерживать актуальность каталога;
- Интегрировать данные из внешних систем (поставщики, ERP и т.д.);
- Сократить рутинные операции и снизить вероятность ошибок.
WooCommerce из коробки не имеет встроенного инструмента для автоматического импорта по расписанию, поэтому стоит рассмотреть кастомные решения и плагины.
Подготовка CSV-файла для импорта
Для корректного импорта нужно подготовить CSV с обязательными полями WooCommerce:
sku— уникальный идентификатор товара;name— название товара;regular_price— цена;description— описание;stock— количество на складе;- и другие по необходимости.
Важно соблюдать кодировку UTF-8 и разделитель запятая или точка с запятой, в зависимости от настроек сервера. Можно подготовить CSV в Excel, Google Sheets или специализированных программах.
Создание PHP-скрипта для импорта CSV в WooCommerce
Пример простого скрипта, который читает CSV и обновляет или создаёт товары:
<?php
// Функция wplab_import_products_from_csv
function wplab_import_products_from_csv($csv_file_path) {
if (!file_exists($csv_file_path)) {
return 'CSV файл не найден';
}
$handle = fopen($csv_file_path, 'r');
if (!$handle) {
return 'Не удалось открыть CSV файл';
}
$header = fgetcsv($handle, 1000, ',');
if (!$header) {
fclose($handle);
return 'Пустой CSV файл';
}
// Индексы колонок
$indexes = array_flip($header);
while (($row = fgetcsv($handle, 1000, ',')) !== FALSE) {
$sku = $row[$indexes['sku']];
$name = $row[$indexes['name']];
$price = $row[$indexes['regular_price']];
$description = $row[$indexes['description']];
$stock = intval($row[$indexes['stock']]);
if (empty($sku) || empty($name)) {
continue; // пропускаем если нет sku или имени
}
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id) {
// Обновляем существующий товар
$product = wc_get_product($product_id);
$product->set_name($name);
$product->set_regular_price($price);
$product->set_description($description);
$product->set_stock_quantity($stock);
$product->save();
} else {
// Создаем новый товар
$product = new WC_Product_Simple();
$product->set_sku($sku);
$product->set_name($name);
$product->set_regular_price($price);
$product->set_description($description);
$product->set_stock_quantity($stock);
$product->save();
}
}
fclose($handle);
return 'Импорт завершён успешно';
}
?>Этот код можно запускать вручную или через WP-Cron для автоматизации. Для запуска через WP-Cron достаточно добавить задачу с вызовом wplab_import_products_from_csv($path_to_csv).
Как настроить WP-Cron для автоматического импорта
Добавьте в файл functions.php или в свой плагин следующее:
<?php
// Регистрация задачи в WP-Cron
add_action('wplab_woocommerce_import_cron', 'wplab_woocommerce_import_cron_callback');
function wplab_woocommerce_import_cron_callback() {
$csv_path = WP_CONTENT_DIR . '/uploads/import/products.csv';
echo wplab_import_products_from_csv($csv_path);
}
// Планируем событие, если не запланировано
if (!wp_next_scheduled('wplab_woocommerce_import_cron')) {
wp_schedule_event(time(), 'hourly', 'wplab_woocommerce_import_cron');
}
?>Это будет запускать импорт каждый час автоматически.
Рекомендации по плагинам для импорта CSV в WooCommerce
Если не хочется писать код, существуют готовые решения с расширенным функционалом:
- WP CSV Importer — удобный плагин с поддержкой автоматического запуска по расписанию и тонкой настройкой сопоставления полей;
- Product Import Export for WooCommerce — бесплатный и популярный плагин с возможностью экспорта и импорта;
- WPRemark — плагин для проверки качества и корректности данных перед импортом.
Плагины особенно полезны, если у вас сложные типы продуктов, вариации, атрибуты, или нужно интегрировать импорт с внешними сервисами.
Обработка ошибок и логирование при импорте CSV
При работе с импортом важно отслеживать возможные ошибки, чтобы избежать повреждения данных:
- Проверяйте корректность CSV (кодировка, структура);
- Добавляйте логирование в свой скрипт, чтобы знать, какие товары были обработаны;
- Обрабатывайте исключения и ошибки — например, если не удалось сохранить продукт;
- Используйте транзакции базы данных, если это возможно, чтобы откатить изменения при критических ошибках.
Пример простого логирования в файл:
function wplab_log_import($message) {
$log_file = WP_CONTENT_DIR . '/uploads/import/import_log.txt';
$date = date('Y-m-d H:i:s');
file_put_contents($log_file, "[$date] $message\n", FILE_APPEND);
}
// Вызов внутри функции импорта
wplab_log_import("Товар с SKU $sku обработан");Заключение по автоматизации импорта CSV в WooCommerce
Автоматический импорт товаров из CSV — мощный инструмент, который помогает поддерживать актуальность каталога и экономить время. Правильно настроенный скрипт или плагин избавит вас от рутины и ошибок. Рекомендуется комбинировать программные решения с проверкой данных с помощью плагинов вроде WPRemark для обеспечения качества контента.
Если вы хотите получить готовый плагин с простым интерфейсом и автоматическим запуском импорта, обратите внимание на WP CSV Importer. Он существенно упростит работу с большими каталогами и позволит сосредоточиться на развитии бизнеса.