Импорт данных из Excel в WordPress — частая задача для сайтов, которые работают с каталогами, магазинами или базами данных. Особенно актуально это для WooCommerce, где нужно регулярно обновлять ассортимент товаров. В этой статье разберем, как реализовать автоматический импорт продуктов в WordPress из Excel файла с помощью PHP кода и популярных плагинов.
Почему автоматический импорт из Excel важен для WordPress
Ручное добавление или обновление товаров занимает много времени, особенно если каталог большой и часто меняется. Excel — удобный формат для хранения данных, который легко редактировать. Автоматизировав импорт, вы сможете:
- Сэкономить время и избежать ошибок ручного ввода;
- Регулярно обновлять каталог без участия разработчика;
- Интегрировать поставщиков, которые присылают прайс-листы в Excel.
Для этого можно использовать готовые плагины, либо написать собственный скрипт, если нужны особые условия обработки данных.
Обзор плагинов для импорта Excel в WordPress и WooCommerce
Среди популярных решений выделяются:
- WP All Import — мощный и универсальный плагин с поддержкой Excel и CSV, позволяет настраивать импорт любых типов данных, включая продукты WooCommerce.
- WooCommerce Product Import Export Plugin — специализированный для WooCommerce, поддерживает CSV, Excel и XML, умеет обновлять товары по артикулу.
- WP Ultimate CSV Importer — поддерживает импорт в пользовательские поля, удобен для сложных структур данных.
Но если нужно не просто импортировать, а сделать это автоматическим процессом с кастомной логикой, лучше написать собственное решение.
Пример кода для автоматического импорта продуктов из Excel в WooCommerce
Для работы с Excel используем библиотеку PhpSpreadsheet. Она позволяет легко читать Excel файлы в PHP. Далее создадим функцию wpstart_import_products_from_excel(), которая будет обрабатывать файл и добавлять/обновлять товары.
function wpstart_import_products_from_excel($file_path) {
require_once __DIR__ . '/vendor/autoload.php'; // Подключаем PhpSpreadsheet
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_path);
$worksheet = $spreadsheet->getActiveSheet();
foreach ($worksheet->getRowIterator(2) as $row) { // Пропускаем заголовок
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$data = [];
foreach ($cellIterator as $cell) {
$data[] = $cell->getValue();
}
list($sku, $name, $price, $description, $stock) = $data;
if (empty($sku) || empty($name)) continue; // Обязательные поля
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id) {
$product = wc_get_product($product_id);
} 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->set_manage_stock(true);
$product->save();
}
}Этот код:
- Загружает Excel файл;
- Читает строки начиная со второй (первая — заголовки);
- Для каждой строки берет SKU, имя, цену, описание и количество на складе;
- Если товар с таким SKU есть, обновляет его, иначе создает новый;
- Сохраняет товар в WooCommerce.
Такой скрипт можно запускать по Cron, чтобы автоматически обновлять каталог по расписанию.
Как подключить и использовать скрипт
1. Установите PhpSpreadsheet через Composer в корне темы или плагина:
composer require phpoffice/phpspreadsheet2. Добавьте функцию wpstart_import_products_from_excel в файл functions.php или в свой плагин.
3. Вызовите функцию с путем к Excel файлу (например, загруженному через админку или FTP):
wpstart_import_products_from_excel(WP_CONTENT_DIR . '/uploads/products.xlsx');4. Для автоматизации создайте задачу WP-Cron или системный cron, который будет запускать этот код.
Важные советы по работе с импортом продуктов из Excel
Структура Excel файла
Убедитесь, что в Excel файле есть четкие столбцы с обязательными полями: SKU, название, цена. Остальные поля — по желанию. Желательно использовать единый формат данных, чтобы избежать ошибок при парсинге.
Обработка ошибок и логирование
Рекомендуется добавлять обработку исключений и логирование результата импорта для отслеживания проблем. Например, можно писать в файл лога, сколько товаров создано, обновлено, сколько ошибок возникло.
Оптимизация импорта
При большом количестве товаров стоит разбивать импорт на части, чтобы не превышать лимит по времени работы PHP. Можно сохранять прогресс и запускать по частям с помощью AJAX или WP-CLI.
Заключение
Автоматический импорт продуктов из Excel в WordPress — мощный инструмент для упрощения управления магазином и каталогом. Используя примеры кода и плагины из статьи, вы сможете настроить удобный и надежный процесс обновления данных без лишних затрат времени.
Если хотите расширенный функционал импорта с поддержкой сложных полей, обратите внимание на WP All Import — отличный плагин с гибкими настройками.