Автоматизация импорта товаров в WooCommerce — частая задача для владельцев интернет-магазинов, особенно если ассортимент регулярно обновляется или поставляется из внешних систем. В этой статье подробно разберём, как настроить автоматический импорт продукции из CSV файла, используя плагины и собственные решения с примерами кода.
Почему автоматический импорт товаров важен для WooCommerce
Ручное добавление и обновление товаров занимает много времени и повышает риск ошибок. Автоматический импорт позволяет:
- Обновлять цены и наличие товаров без ручного вмешательства.
- Импортировать новые позиции из прайс-листов поставщиков.
- Поддерживать актуальность каталога на сайте.
Это особенно важно для магазинов с большим ассортиментом и частыми изменениями.
Обзор популярных плагинов для импорта CSV в WooCommerce
Существует несколько проверенных плагинов, которые значительно упрощают импорт товаров из CSV:
- WP All Import + WooCommerce Add-On — мощный инструмент с поддержкой сложных правил импорта и обновления.
- Product CSV Import Suite от WooCommerce — официальный плагин с удобным интерфейсом и поддержкой кастомных полей.
- CSV Importer for WooCommerce — бесплатный плагин для базового импорта, подходит для простых задач.
Все эти плагины позволяют настроить периодический импорт с помощью Cron, но для более гибкой настройки можно использовать собственные решения на PHP.
Настройка автоматического импорта CSV через WP Cron и PHP
Если вы хотите реализовать кастомный импорт, который подстраивается под ваши требования, можно написать функцию, которая будет запускаться по расписанию:
function wpmax_import_products_from_csv() {
$csvFile = fopen(ABSPATH . 'wp-content/uploads/products.csv', 'r');
if (!$csvFile) return;
$header = fgetcsv($csvFile);
while (($row = fgetcsv($csvFile)) !== false) {
$data = array_combine($header, $row);
// Проверяем, существует ли товар по SKU
$existing_product_id = wc_get_product_id_by_sku($data['sku']);
if ($existing_product_id) {
$product = wc_get_product($existing_product_id);
} else {
$product = new WC_Product_Simple();
$product->set_sku($data['sku']);
}
$product->set_name($data['name']);
$product->set_regular_price($data['price']);
$product->set_stock_quantity($data['stock']);
$product->set_description($data['description']);
$product->save();
}
fclose($csvFile);
}
add_action('wpmax_cron_import_csv', 'wpmax_import_products_from_csv');
if (!wp_next_scheduled('wpmax_cron_import_csv')) {
wp_schedule_event(time(), 'hourly', 'wpmax_cron_import_csv');
}В этом коде мы:
- Открываем CSV файл из папки uploads.
- Читаем заголовки и строки, создаём или обновляем товары по SKU.
- Обновляем название, цену, количество и описание.
- Запускаем функцию каждый час через WP Cron.
Такой подход даёт полный контроль и возможность расширения, например, для импорта атрибутов, категорий и изображений.
Рекомендации по подготовке CSV файла для импорта в WooCommerce
Для корректной работы импорта необходимо следовать некоторым рекомендациям:
- Обязательно наличие уникального ключа для товара, например, SKU.
- Все заголовки столбцов должны быть понятными и совпадать с полями товара, например: sku, name, price, stock, description.
- Избегайте пустых строк и ячеек, это может привести к ошибкам.
- Если импортируете изображения, указывайте в CSV полный URL или относительный путь к файлу.
Для сложных товаров (вариаций) структура CSV должна быть более продуманной, и рекомендуется использовать специализированные плагины.
Как интегрировать импорт с плагином Clearfy Pro для оптимизации
Плагин Clearfy Pro помогает оптимизировать работу WooCommerce и WordPress в целом, что особенно важно при больших объемах импорта:
- Отключение ненужных скриптов и стилей для ускорения работы сайта.
- Оптимизация базы данных и очистка временных данных.
- Управление Cron задачами для предотвращения конфликтов.
Используйте Clearfy Pro вместе с кастомным импортом для стабильной и быстрой работы магазина.
Пример расширения импорта с обработкой категорий и изображений
Для добавления категорий и загрузки изображений можно расширить функцию следующим образом:
function wpmax_import_products_from_csv() {
$csvFile = fopen(ABSPATH . 'wp-content/uploads/products.csv', 'r');
if (!$csvFile) return;
$header = fgetcsv($csvFile);
while (($row = fgetcsv($csvFile)) !== false) {
$data = array_combine($header, $row);
$existing_product_id = wc_get_product_id_by_sku($data['sku']);
if ($existing_product_id) {
$product = wc_get_product($existing_product_id);
} else {
$product = new WC_Product_Simple();
$product->set_sku($data['sku']);
}
$product->set_name($data['name']);
$product->set_regular_price($data['price']);
$product->set_stock_quantity($data['stock']);
$product->set_description($data['description']);
// Установка категории
if (!empty($data['category'])) {
$cat_id = term_exists($data['category'], 'product_cat');
if (!$cat_id) {
$cat_id = wp_insert_term($data['category'], 'product_cat');
}
if (!is_wp_error($cat_id)) {
$product->set_category_ids(array($cat_id['term_id']));
}
}
$product_id = $product->save();
// Загрузка изображения из URL
if (!empty($data['image_url'])) {
$image_id = wpmax_upload_image_from_url($data['image_url'], $product_id);
if ($image_id) {
set_post_thumbnail($product_id, $image_id);
}
}
}
fclose($csvFile);
}
function wpmax_upload_image_from_url($image_url, $post_id) {
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_array = array(
'name' => basename($image_url),
'tmp_name' => $tmp
);
$id = media_handle_sideload($file_array, $post_id);
if (is_wp_error($id)) {
@unlink($file_array['tmp_name']);
return false;
}
return $id;
}Этот код автоматически создаст категории, если их нет, и прикрепит главное изображение к товару.
Выводы и рекомендации
Создание автоматического импорта товаров в WooCommerce из CSV файла — задача решаемая как с помощью готовых плагинов, так и собственными скриптами. Использование WP Cron позволит запускать импорт по расписанию, а расширение с загрузкой изображений и созданием категорий сделает процесс максимально удобным.
Для повышения производительности и безопасности сайта советуем использовать Clearfy Pro, который оптимизирует работу WordPress и WooCommerce.
Если вы хотите более простое решение, обратите внимание на WP All Import с аддоном для WooCommerce — это мощный инструмент с понятным интерфейсом и множеством настроек.