wpcompany.ru wordpress WPCompany

Автоматический импорт товаров из XML в WooCommerce с примерами кода

Автоматизация импорта товаров — частая задача для сайтов на 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');
});

Рекомендуется:

  • Тестировать импорт на тестовом окружении;
  • Создавать резервные копии базы перед массовым импортом;
  • Оптимизировать парсинг, чтобы не перегружать сервер;
  • Обрабатывать ошибки и логировать процесс.
×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре