Если у вас интернет-магазин на WooCommerce и вы регулярно получаете обновления товаров в формате CSV, автоматизация процесса импорта существенно сэкономит время и уменьшит количество ошибок. В этой статье разберём, как настроить автоматический импорт товаров из CSV файла в WooCommerce на примере простого решения с использованием плагинов и собственного кода.
Почему автоматический импорт товаров из CSV важен для WooCommerce
Ручной импорт товаров через админку WooCommerce подходит для единичных загрузок, но когда каталог большой и обновляется регулярно, это становится утомительно. Автоматизация позволяет:
- Загружать новые товары и обновлять существующие без участия человека.
- Экономить время и снижать риск ошибок, связанных с ручным вводом.
- Интегрировать WooCommerce с внешними системами поставщиков и ERP.
Для этого можно использовать готовые плагины или написать собственный скрипт, который будет запускаться по расписанию.
Плагины для автоматического импорта CSV в WooCommerce
WP All Import + WooCommerce Add-On
Один из самых мощных и популярных плагинов. Позволяет гибко настраивать импорт любых данных из CSV или XML, включая вариативные товары, атрибуты, категории и мета-поля.
Основные возможности:
- Ручной или автоматический импорт по расписанию (через CRON).
- Настройка сопоставления колонок CSV с полями товаров.
- Поддержка сложных структур, вариаций и пользовательских полей.
Подробнее о плагине и покупке можно узнать на официальной странице WPShop.
Product Import Export for WooCommerce
Бесплатный плагин с базовым функционалом импорта и экспорта. Подходит для небольших магазинов, позволяет быстро импортировать товары из CSV, но без сложной настройки расписания.
Плюсы:
- Простота использования.
- Поддержка стандартных типов товаров.
- Возможность сопоставления колонок.
Минусы — отсутствует полноценная автоматизация через CRON, сложные вариации не поддерживаются.
Пример автоматического импорта товаров из CSV с помощью собственного кода
Если вы хотите более лёгкий и кастомный способ, можно написать функцию для импорта, которая будет запускаться по CRON. Ниже пример базовой функции для импорта товаров из файла import.csv в корне сайта.
function wpdownload_import_products_from_csv() {
$csv_file = ABSPATH . 'import.csv';
if (!file_exists($csv_file)) {
error_log('CSV файл для импорта не найден');
return;
}
if (($handle = fopen($csv_file, 'r')) !== false) {
$header = fgetcsv($handle, 1000, ',');
while (($data = fgetcsv($handle, 1000, ',')) !== false) {
$row = array_combine($header, $data);
// Проверяем, есть ли товар с таким артикулом
$existing = get_posts(array(
'post_type' => 'product',
'meta_key' => '_sku',
'meta_value' => $row['sku'],
'post_status' => 'publish',
'fields' => 'ids'
));
$product_id = !empty($existing) ? $existing[0] : 0;
$product_data = array(
'post_title' => $row['name'],
'post_content' => $row['description'],
'post_status' => 'publish',
'post_type' => 'product',
);
if ($product_id) {
$product_data['ID'] = $product_id;
wp_update_post($product_data);
} else {
$product_id = wp_insert_post($product_data);
}
if ($product_id) {
update_post_meta($product_id, '_sku', sanitize_text_field($row['sku']));
update_post_meta($product_id, '_price', floatval($row['price']));
update_post_meta($product_id, '_regular_price', floatval($row['price']));
update_post_meta($product_id, '_stock_status', $row['stock'] > 0 ? 'instock' : 'outofstock');
// Можно добавить обновление категорий и других полей
}
}
fclose($handle);
}
}
// Добавляем крон-задачу, которая будет запускать импорт раз в сутки
if (!wp_next_scheduled('wpdownload_daily_product_import')) {
wp_schedule_event(time(), 'daily', 'wpdownload_daily_product_import');
}
add_action('wpdownload_daily_product_import', 'wpdownload_import_products_from_csv');Этот пример демонстрирует базовый принцип — чтение CSV, поиск товара по SKU, создание или обновление записи в WooCommerce. Для реальных проектов стоит добавить обработку ошибок, логирование и поддержку вариаций.
Настройка CRON задачи для импорта – что важно знать
Чтобы автоматический импорт работал, необходимо, чтобы на сервере была настроена WP-Cron или системный CRON. Без этого функция импорта не будет запускаться по расписанию.
Рекомендуется:
- Проверить, что
DISABLE_WP_CRONне активирован вwp-config.phpили настроить системный CRON для вызоваwp-cron.php. - Тестировать функцию импорта вручную перед автоматизацией.
- Логировать процесс в отдельный файл или системный журнал для отладки.
Советы по работе с импортом CSV для WooCommerce
Правильный формат CSV
Для успешного импорта важно соблюдать формат файла. Обычно столбцы должны включать SKU, название, описание, цену, количество на складе и категории. Все поля должны быть корректно экранированы и разделены запятыми.
Обработка ошибок и дубликатов
При импорте возможны ошибки из-за неверных данных или дубликатов. В коде стоит предусмотреть:
- Проверку наличия SKU.
- Логирование ошибок.
- Пропуск некорректных строк с уведомлением администратора.
Интеграция с внешними системами
Если ваш CSV генерируется из ERP или CRM, имеет смысл автоматизировать выгрузку и загрузку файлов, например, через FTP, API или облачные хранилища. Плагины WP All Import поддерживают подключение к URL или FTP для загрузки файлов.
Для более сложных задач можно рассмотреть кастомные решения на базе WP REST API и cron, чтобы импортировать данные напрямую из внешних систем без промежуточных файлов.