Автоматизация импорта товаров — частая задача для сайтов на WooCommerce, особенно при работе с поставщиками, которые предоставляют каталоги в формате XML. В этой статье разберём, как создать автоматический импорт товаров из XML-файлов в WooCommerce, используя PHP и встроенные возможности WordPress, а также рассмотрим популярные плагины, облегчающие этот процесс.
Почему нужен автоматический импорт товаров из XML в WooCommerce
Ручное добавление и обновление товаров — трудоёмкий и подверженный ошибкам процесс. Автоматизация позволяет:
- Экономить время на обновление ассортимента;
- Поддерживать актуальные цены и наличие;
- Снижать вероятность ошибок при вводе данных;
- Интегрировать сторонние каталоги с вашим магазином.
Однако нет универсального решения: XML-файлы у разных поставщиков сильно отличаются структурой, поэтому нужно либо адаптировать код под конкретный формат, либо использовать гибкие плагины.
Пример реализации автоматического импорта из XML с помощью кода
Рассмотрим упрощённый пример функции wpcompany_import_products_from_xml, которая загружает XML, парсит и добавляет товары в WooCommerce:
function wpcompany_import_products_from_xml($xml_url) {
// Загружаем XML
$xml_content = file_get_contents($xml_url);
if (!$xml_content) {
error_log('Не удалось загрузить XML файл');
return;
}
$xml = simplexml_load_string($xml_content);
if (!$xml) {
error_log('Ошибка парсинга XML');
return;
}
foreach ($xml->product as $item) {
// Получаем необходимые данные из XML
$title = (string) $item->title;
$sku = (string) $item->sku;
$price = (float) $item->price;
$description = (string) $item->description;
// Проверяем, существует ли товар с таким артикулом
$existing_product_id = wc_get_product_id_by_sku($sku);
if ($existing_product_id) {
// Обновляем товар
$product = wc_get_product($existing_product_id);
} else {
// Создаём новый товар
$product = new WC_Product_Simple();
}
// Заполняем данные
$product->set_name($title);
$product->set_sku($sku);
$product->set_price($price);
$product->set_regular_price($price);
$product->set_description($description);
$product->save();
}
}
// Пример вызова функции
add_action('init', function() {
if (isset($_GET['wpcompany_import_xml']) && current_user_can('manage_woocommerce')) {
wpcompany_import_products_from_xml('https://example.com/path/to/products.xml');
exit('Импорт завершён');
}
});
Этот пример демонстрирует базовый подход: загружаем XML, парсим его, проверяем наличие товара по SKU и создаём или обновляем запись. В реальном проекте нужно добавить обработку изображений, категорий, атрибутов и учесть особенности формата XML.
Обработка изображений и категорий при импорте
Изображения в XML обычно представлены ссылками. Чтобы добавить их в товар, необходимо скачать файл, загрузить в медиатеку и связать с продуктом. Пример кода для загрузки изображения:
function wpcompany_import_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');
// Скачиваем и загружаем изображение
$media = media_sideload_image($image_url, $post_id, null, 'id');
if (is_wp_error($media)) {
error_log('Ошибка загрузки изображения: ' . $media->get_error_message());
return false;
}
return $media; // ID вложения
}
Добавление категории:
function wpcompany_set_product_category($product_id, $category_name) {
$term = term_exists($category_name, 'product_cat');
if (!$term) {
$term = wp_insert_term($category_name, 'product_cat');
}
if (!is_wp_error($term)) {
wp_set_object_terms($product_id, intval($term['term_id']), 'product_cat');
}
}
В основной функции импорта можно вызвать эти методы для обработки каждой записи.
Популярные плагины для импорта из XML в WooCommerce
Если вы не готовы писать код, есть проверенные плагины:
- WP All Import — один из самых мощных инструментов для импорта XML и CSV, поддерживает сложную логику и обновление товаров.
- Product Import Export for WooCommerce — бесплатный плагин с поддержкой XML и CSV.
- WooCommerce XML Import Suite — официальный плагин от WooCommerce, поддерживает импорт товаров из XML.
Для интеграции с WPGPT можно автоматизировать создание описаний товаров на основе импортируемых данных, что повысит уникальность контента.
Автоматизация запуска импорта и рекомендации
Импорт можно запускать вручную по URL с параметром, как в примере выше, или настроить по Cron:
function wpcompany_schedule_xml_import() {
if (!wp_next_scheduled('wpcompany_cron_import_products')) {
wp_schedule_event(time(), 'hourly', 'wpcompany_cron_import_products');
}
}
add_action('wp', 'wpcompany_schedule_xml_import');
add_action('wpcompany_cron_import_products', function() {
wpcompany_import_products_from_xml('https://example.com/path/to/products.xml');
});
Рекомендуется:
- Тестировать импорт на тестовом окружении;
- Создавать резервные копии базы перед массовым импортом;
- Оптимизировать парсинг, чтобы не перегружать сервер;
- Обрабатывать ошибки и логировать процесс.