Если у вас интернет-магазин на WordPress и вы регулярно обновляете каталог товаров, вероятно, вы сталкивались с задачей массового импорта товаров из Excel. Ручной ввод сотен и тысяч товаров — это огромная трата времени и ресурсов. В этой статье мы разберём несколько способов автоматизировать импорт продуктов из Excel-файла в WordPress, поделимся примерами кода и обзором полезных плагинов.
Почему важен автоматический импорт продуктов из Excel в WordPress
Владельцы магазинов часто получают от поставщиков каталоги товаров в формате Excel. Чтобы не вводить данные вручную, требуется автоматизация процесса. Это позволяет:
- Экономить время на обновление каталога;
- Избежать ошибок ручного ввода;
- Облегчить регулярное обновление остатков и цен;
- Обеспечить стабильность данных;
- Интегрировать разные источники данных.
В зависимости от масштаба магазина и частоты обновлений можно выбрать разные подходы — от готовых плагинов до кастомных скриптов.
Плагины для импорта товаров из Excel в WordPress
Среди популярных плагинов выделяются:
1. WP All Import + WooCommerce Add-On
Этот мощный инструмент позволяет импортировать товары в WooCommerce из CSV и Excel (после конвертации). Поддерживает сложные настройки полей, вариаций, изображений и метаданных.
Преимущества:
- Гибкая настройка маппинга колонок Excel к полям товара;
- Поддержка обновления существующих товаров;
- Автоматизация с помощью cron;
- Расширения для работы с заказами, клиентами.
2. WooCommerce Product Import Export Plugin by WebToffee
Позволяет импортировать и экспортировать товары из Excel и CSV. Есть возможность массового обновления и создания новых товаров.
Минус — бесплатная версия ограничена по функционалу, но для базовых задач подходит.
3. Ultimate CSV Importer
Универсальный плагин для импорта любых данных в WordPress, включая товары WooCommerce. Работает с CSV и Excel.
Поддерживает сложные типы данных, пользовательские поля, таксономии.
Как создать собственный скрипт для импорта Excel в WordPress
Если вы хотите контролировать процесс и интегрировать импорт в свои бизнес-процессы, можно написать собственный PHP-скрипт. Для работы с Excel используем библиотеку PhpSpreadsheet.
Установим через Composer:
composer require phpoffice/phpspreadsheetПример функции для импорта данных из Excel и создания товаров в WooCommerce:
function wp24_import_products_from_excel($file_path) {
require_once 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = IOFactory::load($file_path);
$sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray();
// Предполагаем, что первая строка - заголовки
$header = array_shift($rows);
foreach ($rows as $row) {
$data = array_combine($header, $row);
// Создаём массив параметров для товара
$post_data = array(
'post_title' => sanitize_text_field($data['Название']),
'post_content' => sanitize_textarea_field($data['Описание']),
'post_status' => 'publish',
'post_type' => 'product',
);
$product_id = wp_insert_post($post_data);
if ($product_id && !is_wp_error($product_id)) {
// Устанавливаем цену
update_post_meta($product_id, '_regular_price', sanitize_text_field($data['Цена']));
update_post_meta($product_id, '_price', sanitize_text_field($data['Цена']));
// Устанавливаем артикул
if (!empty($data['Артикул'])) {
update_post_meta($product_id, '_sku', sanitize_text_field($data['Артикул']));
}
// Добавляем категорию
if (!empty($data['Категория'])) {
$term = term_exists($data['Категория'], 'product_cat');
if (!$term) {
$term = wp_insert_term($data['Категория'], 'product_cat');
}
if (!is_wp_error($term)) {
wp_set_object_terms($product_id, intval($term['term_id']), 'product_cat');
}
}
}
}
}Этот код позволяет импортировать базовые данные: название, описание, цену, артикул и категорию. Для более сложных данных (вариации, изображения, атрибуты) нужно расширять логику.
Обработка изображений товаров из Excel
В Excel часто указывают ссылки на изображения. Чтобы добавить их в товар, нужно скачать файл и прикрепить к продукту.
Пример кода для загрузки и прикрепления изображения к товару:
function wp24_attach_image_to_product($image_url, $product_id) {
require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.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, $product_id);
if (is_wp_error($id)) {
@unlink($tmp);
return false;
}
// Устанавливаем изображение как миниатюру товара
set_post_thumbnail($product_id, $id);
return true;
}Вызывайте эту функцию внутри цикла импорта, передавая URL из Excel.
Автоматизация импорта по расписанию
Чтобы не запускать импорт вручную, можно создать WP-Cron задачу, которая будет запускать функцию импорта регулярно.
Пример добавления cron задания в functions.php:
function wp24_schedule_import() {
if (!wp_next_scheduled('wp24_import_products_event')) {
wp_schedule_event(time(), 'hourly', 'wp24_import_products_event');
}
}
add_action('wp', 'wp24_schedule_import');
add_action('wp24_import_products_event', 'wp24_import_products_from_excel_cron');
function wp24_import_products_from_excel_cron() {
$file_path = WP_CONTENT_DIR . '/uploads/products.xlsx';
wp24_import_products_from_excel($file_path);
}Не забудьте разместить файл Excel в указанной директории и обновлять его по мере необходимости.
Рекомендации по организации Excel-файла для импорта
Чтобы импорт прошёл успешно, придерживайтесь следующих правил при подготовке Excel:
- Первая строка — заголовки столбцов, совпадающие с ожидаемыми ключами в коде (например, "Название", "Описание", "Цена", "Артикул", "Категория", "Изображение");
- Используйте однородный формат данных;
- Проверяйте URL изображений на доступность;
- Избегайте пустых строк и колонок;
- Учитывайте кодировку файла (UTF-8 рекомендуется).
Заключение: что выбрать — плагин или собственный скрипт
Если у вас небольшой магазин и периодический импорт, проще воспользоваться плагинами вроде WP All Import. Они имеют удобный интерфейс и поддержку.
Если же требуется полный контроль, сложная логика, интеграция с внешними системами, рекомендуется писать кастомный скрипт с использованием PhpSpreadsheet и функций WordPress для создания товаров.
Автоматизация импорта существенно экономит время и снижает риск ошибок, позволяя сосредоточиться на развитии бизнеса.