Введение в автоматический импорт товаров из CSV в WooCommerce — важная задача для владельцев интернет-магазинов, которые хотят экономить время на добавлении и обновлении большого ассортимента продукции. В этой статье подробно разберём, как реализовать автоматический импорт товаров из CSV с помощью кода и популярных плагинов.
Почему автоматический импорт товаров из CSV важен для WooCommerce
WooCommerce не имеет встроенного функционала для регулярного импорта товаров из CSV, поэтому приходится использовать сторонние решения или писать кастомный код. Автоматизация импорта помогает:
- Поддерживать актуальность каталога;
- Обновлять цены и наличие без ручного труда;
- Импортировать новые товары из внешних систем или поставщиков.
Без автоматизации этот процесс занимает много времени и часто приводит к ошибкам.
Использование популярных плагинов для импорта CSV в WooCommerce
Существует несколько плагинов, которые позволяют импортировать CSV файлы с товарами, например:
- WP All Import – WooCommerce Add-On: мощный инструмент с визуальным редактором, возможностью расписания импорта и поддержкой любых пользовательских полей.
- Product Import Export for WooCommerce: бесплатный плагин с возможностью экспорта и импорта товаров, включая вариации.
- WooCommerce CSV Import Suite: официальный расширение WooCommerce с поддержкой сложных товаров.
Чтобы настроить автоматический импорт с расписанием, лучше использовать WP All Import, который позволяет запускать импорт через WP-Cron или вручную.
Пример настройки WP All Import для автоматического импорта
После установки плагина:
- Создайте новый импорт, выбрав CSV-файл с товарами.
- Настройте сопоставление колонок CSV с полями WooCommerce (название, описание, цена, категории, атрибуты).
- В разделе Scheduling задайте расписание запуска импорта (например, ежедневно в 2:00 ночи).
- Сохраните и активируйте импорт.
Теперь импорт будет выполняться автоматически по расписанию, обновляя или добавляя товары.
Создание собственного решения для автоматического импорта товаров из CSV в WooCommerce
Если хочется избежать сторонних плагинов или нужна более гибкая логика, можно написать свой скрипт импорта, который будет запускаться через WP-Cron. Ниже представлен пример функции, которая читает CSV и создаёт или обновляет товары.
function wpcoder_import_products_from_csv() {
$csv_file = plugin_dir_path(__FILE__) . 'import/products.csv';
if (!file_exists($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);
$sku = sanitize_text_field($row['sku']);
// Проверяем, существует ли товар с таким SKU
$product_id = wc_get_product_id_by_sku($sku);
$product_data = [
'name' => sanitize_text_field($row['name']),
'price' => floatval($row['price']),
'description' => sanitize_textarea_field($row['description']),
];
if ($product_id) {
// Обновляем существующий товар
$product = wc_get_product($product_id);
$product->set_name($product_data['name']);
$product->set_price($product_data['price']);
$product->set_description($product_data['description']);
$product->save();
} else {
// Создаём новый товар
$product = new WC_Product_Simple();
$product->set_name($product_data['name']);
$product->set_sku($sku);
$product->set_price($product_data['price']);
$product->set_description($product_data['description']);
$product->save();
}
}
fclose($handle);
}
}
// Регистрируем событие в WP-Cron для ежедневного запуска
if (!wp_next_scheduled('wpcoder_daily_product_import')) {
wp_schedule_event(time(), 'daily', 'wpcoder_daily_product_import');
}
add_action('wpcoder_daily_product_import', 'wpcoder_import_products_from_csv');В этом примере:
- CSV должен содержать колонки
sku,name,price,description. - При запуске функция загружает CSV, ищет товар по SKU и обновляет или создаёт новый.
- Импорт запускается ежедневно через WP-Cron.
Как запустить импорт вручную для отладки
Для тестирования можно вызвать функцию напрямую:
add_action('admin_init', function() {
if (current_user_can('manage_options') && isset($_GET['run_import'])) {
wpcoder_import_products_from_csv();
wp_die('Импорт завершён');
}
});Достаточно перейти в админку с параметром ?run_import=1 и импорт запустится.
Обработка ошибок и улучшения
В реальном проекте стоит добавить:
- Логирование ошибок и успешных операций в отдельный файл или в системный лог WordPress.
- Обработку различных типов товаров — вариации, групповые товары и т.д.
- Оптимизацию по памяти и времени, если CSV большой — например, разбивать на части.
Также можно интегрировать импорт с плагином WP-Cron для более гибкого управления расписанием и логами.
Выводы и рекомендации
Автоматический импорт товаров из CSV в WooCommerce — ключ к эффективному управлению магазинами с большим каталогом. Выбор между готовыми плагинами и кастомным кодом зависит от специфики задачи и навыков. Для большинства проектов подойдет WP All Import с расписанием, но если нужна интеграция с нестандартными источниками или дополнительная логика — лучше написать свой импорт с использованием WP-Cron.
Для быстрого старта рекомендуем изучить WP All Import и при необходимости расширять функционал собственными скриптами.