Автоматический импорт продуктов в WooCommerce из CSV-файлов — частая задача для владельцев интернет-магазинов, которые хотят регулярно обновлять каталог товаров без ручного вмешательства. В этой статье мы подробно разберём, как настроить такой процесс с помощью готовых плагинов и собственного кода, чтобы импортировать, обновлять и удалять товары автоматически.
Почему важен автоматический импорт продуктов из CSV в WooCommerce
Ручной импорт товаров через админку WooCommerce подходит для разовых операций, но при большом или регулярно обновляемом ассортименте это неудобно и чревато ошибками. Автоматизация позволяет:
- Экономить время, исключая ручной ввод данных;
- Обеспечить актуальность информации о товарах, ценах, остатках;
- Минимизировать ошибки при добавлении и обновлении;
- Гибко настраивать логику импорта под особенности магазина.
Рассмотрим поэтапно, как можно реализовать автоматический импорт из CSV.
Выбор плагина для импорта CSV в WooCommerce
Существует много плагинов для импорта товаров в WooCommerce, но не все поддерживают автоматизацию и регулярное обновление. Вот несколько проверенных вариантов:
1. WP All Import + WooCommerce Add-On
Очень мощный и гибкий плагин, позволяющий настраивать импорт любых данных из CSV или XML. Имеет возможность запускать импорт по расписанию через WP-Cron.
Преимущества:
- Поддержка сложных настроек, включая кастомные поля, атрибуты и вариации;
- Автоматизация через планировщик задач;
- Возможность обновлять существующие товары по ID или SKU.
Подробнее о плагине и покупке с учётом WP All Import на wpshop.ru.
2. Product CSV Import Suite от WooCommerce
Официальное расширение WooCommerce для импорта CSV с поддержкой большинства типов данных товаров. Позволяет обновлять товары и заказывать импорт по расписанию.
3. Автоматизация с помощью WP-Cron и кастомного кода
Если вы хотите сделать процесс максимально лёгким и не зависеть от плагинов, можно написать собственный скрипт, который будет импортировать CSV и запускаться по расписанию с помощью системного cron или WP-Cron.
Пример кода для автоматического импорта CSV в WooCommerce
Ниже приведён упрощённый пример функции wprus_import_products_from_csv(), которая считывает CSV, создаёт или обновляет продукты по SKU и запускается по cron.
function wprus_import_products_from_csv() {
$csvFile = plugin_dir_path(__FILE__) . 'products.csv';
if (!file_exists($csvFile)) {
error_log('CSV файл не найден: ' . $csvFile);
return;
}
if (($handle = fopen($csvFile, 'r')) !== false) {
$header = fgetcsv($handle, 1000, ',');
while (($data = fgetcsv($handle, 1000, ',')) !== false) {
$row = array_combine($header, $data);
$sku = sanitize_text_field($row['sku']);
$product_id = wprus_get_product_id_by_sku($sku);
if ($product_id) {
// Обновляем существующий товар
$product = wc_get_product($product_id);
} else {
// Создаём новый товар
$product = new WC_Product_Simple();
}
$product->set_name(sanitize_text_field($row['name']));
$product->set_sku($sku);
$product->set_price(floatval($row['price']));
$product->set_regular_price(floatval($row['price']));
$product->set_stock_quantity(intval($row['stock']));
$product->set_description(sanitize_textarea_field($row['description']));
$product->save();
}
fclose($handle);
}
}
function wprus_get_product_id_by_sku($sku) {
global $wpdb;
return $wpdb->get_var($wpdb->prepare(
"SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_sku' AND meta_value=%s LIMIT 1",
$sku
));
}
// Запускаем импорт раз в час через WP-Cron
add_action('wprus_hourly_import', 'wprus_import_products_from_csv');
if (!wp_next_scheduled('wprus_hourly_import')) {
wp_schedule_event(time(), 'hourly', 'wprus_hourly_import');
}В этом примере CSV должен иметь колонки: sku,name,price,stock,description. Функция ищет товар по SKU, обновляет его или создаёт новый. Запуск по расписанию гарантирует, что ваш каталог всегда актуален.
Настройка автоматического запуска скрипта на сервере
WP-Cron не всегда надежен, особенно на сайтах с низкой посещаемостью. Для гарантированной работы лучше настроить системный cron на сервере, который будет делать HTTP-запрос к вашему сайту, вызывая WP-Cron:
- Добавьте в crontab строку:
*/30 * * * * wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1- Или используйте curl:
*/30 * * * * curl -s https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1<Это будет запускать задачи WP-Cron каждые 30 минут.
Дополнительные советы и лучшие практики
Обработка ошибок и логирование
При работе с импортом важно отслеживать ошибки. Рекомендуется расширить функцию импорта логированием в файл или в системный журнал, чтобы понять, если что-то пошло не так.
Оптимизация производительности
При большом объёме данных импорт стоит разбивать на пачки, чтобы избежать превышения лимитов памяти и времени выполнения PHP. Можно использовать функцию wp_schedule_single_event() для последовательного запуска частей импорта.
Использование кастомных полей и таксономий
Если в вашем магазине используются дополнительные атрибуты или кастомные поля, их тоже можно импортировать, расширяя функцию или настраивая соответствующие плагины, например, WP All Import.
Заключение
Автоматический импорт продуктов в WooCommerce из CSV — отличное решение для магазинов с регулярно меняющимся ассортиментом. Выбирайте подходящий плагин или реализуйте собственный скрипт с расписанием, чтобы всегда иметь актуальные данные. Для профессионального подхода рекомендуем обратить внимание на WP All Import, который значительно упростит задачу.