Как создать автоматический импорт продукции в WooCommerce из XML файла

WooCommerce — одна из самых популярных платформ для создания интернет-магазинов на WordPress. Часто возникает задача автоматического импорта продукции из внешних систем, поставщиков или ERP в формате XML. В этой статье мы разберем, как организовать такой импорт с помощью кода и плагинов, чтобы обновлять каталог товаров без ручного труда.

Зачем нужен автоматический импорт продукции в WooCommerce из XML

Если ваш магазин сотрудничает с поставщиками, которые предоставляют файлы с товарами в формате XML, ручной ввод данных становится крайне трудоемким и ошибочным. Автоматический импорт:

  • Обеспечивает актуальность ассортимента и цен;
  • Экономит время на обновление каталога;
  • Позволяет быстро реагировать на изменения у поставщика;
  • Уменьшает количество ошибок, связанных с ручным вводом.

Рассмотрим, как реализовать импорт XML с товарами в WooCommerce с помощью PHP-кода и разберем полезные плагины.

Как прочитать и распарсить XML файл в WordPress

Для начала нам нужно загрузить XML файл и разобрать его структуру. WordPress и PHP предоставляют класс SimpleXMLElement, который отлично подходит для работы с XML.

function wpmy_parse_xml_file($file_path) {
    if (!file_exists($file_path)) {
        return false;
    }

    $xml = simplexml_load_file($file_path);
    if ($xml === false) {
        return false;
    }

    return $xml;
}

Этот код загружает XML и возвращает объект для дальнейшей обработки. Обычно в XML у вас есть теги с информацией о товарах — например, <product> с названием, описанием, ценой и т.д.

Создание товаров в WooCommerce через код

После парсинга данных нужно создать или обновить товары в WooCommerce. Для этого используем стандартные функции WooCommerce и WordPress.

function wpmy_create_or_update_product($product_data) {
    $product_id = wc_get_product_id_by_sku($product_data['sku']);

    if (!$product_id) {
        $product = new WC_Product_Simple();
    } else {
        $product = wc_get_product($product_id);
    }

    $product->set_name($product_data['name']);
    $product->set_sku($product_data['sku']);
    $product->set_price($product_data['price']);
    $product->set_regular_price($product_data['price']);
    $product->set_description($product_data['description']);
    $product->save();

    return $product->get_id();
}

Здесь мы ищем товар по SKU — уникальному идентификатору. Если товар найден, обновляем данные, если нет — создаем новый. В массиве $product_data должны быть ключи sku, name, price, description и другие необходимые поля.

Автоматизация импорта: запуск по расписанию с WP-Cron

Чтобы импорт обновлялся автоматически, можно настроить периодический запуск задачи через WP-Cron. Это позволит раз в определённое время загружать свежий XML и обновлять товары.

function wpmy_schedule_import() {
    if (!wp_next_scheduled('wpmy_import_products_event')) {
        wp_schedule_event(time(), 'hourly', 'wpmy_import_products_event');
    }
}
add_action('wp', 'wpmy_schedule_import');

add_action('wpmy_import_products_event', 'wpmy_import_products_callback');

function wpmy_import_products_callback() {
    $xml = wpmy_parse_xml_file(WP_CONTENT_DIR . '/uploads/products.xml');
    if (!$xml) {
        return;
    }

    foreach ($xml->product as $item) {
        $data = [
            'sku' => (string) $item->sku,
            'name' => (string) $item->name,
            'price' => (float) $item->price,
            'description' => (string) $item->description,
        ];
        wpmy_create_or_update_product($data);
    }
}

Этот код будет запускать импорт каждый час. Вы можете изменить интервал или добавить дополнительные проверки.

Полезные плагины для импорта XML в WooCommerce

Если вы не хотите писать код самостоятельно, можно использовать готовые решения:

  • WooCommerce Product Feed PRO — мощный плагин для импорта и экспорта товаров, поддерживает XML и другие форматы.
  • Woo Import Export — удобный инструмент для массового импорта и обновления товаров по XML и CSV.
  • WP All Import с аддоном WooCommerce — популярный плагин для сложных импортов.

Использование плагинов подойдет, если вы не хотите углубляться в программирование, но готовы платить за расширенный функционал.

Особенности и рекомендации при импорте из XML

При работе с импортом учитывайте:

  • Проверяйте структуру XML и корректность данных перед импортом;
  • Обязательно используйте уникальные идентификаторы (SKU) для избегания дублирования;
  • Настраивайте обработку ошибок и логирование — это поможет быстро выявлять проблемы;
  • Тестируйте импорт на копии сайта, чтобы не повредить рабочий магазин;
  • Если импорт большой, делайте разбиение на части, чтобы избежать таймаутов.

Также можно использовать плагин Clearfy Pro для оптимизации работы WooCommerce и ускорения импорта.

Пример расширения импорта: добавление изображений

Чтобы добавить изображения к товару из XML, вы можете скачать файл, загрузить его в медиа-библиотеку и привязать к товару:

function wpmy_set_product_image($product_id, $image_url) {
    $upload_dir = wp_upload_dir();
    $image_data = file_get_contents($image_url);
    $filename = basename($image_url);

    if(wp_mkdir_p($upload_dir['path'])) {
        $file = $upload_dir['path'] . '/' . $filename;
    } else {
        $file = $upload_dir['basedir'] . '/' . $filename;
    }

    file_put_contents($file, $image_data);

    $wp_filetype = wp_check_filetype($filename, null );
    $attachment = [
        'post_mime_type' => $wp_filetype['type'],
        'post_title' => sanitize_file_name($filename),
        'post_content' => '',
        'post_status' => 'inherit'
    ];

    $attach_id = wp_insert_attachment($attachment, $file, $product_id);
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata($attach_id, $file);
    wp_update_attachment_metadata($attach_id, $attach_data);

    set_post_thumbnail($product_id, $attach_id);
}

Вызывайте эту функцию после создания товара, передавая URL изображения из XML.

WooCommerce: как автоматически удалять незавершённые заказы
01.05.2026
Как автоматизировать создание и удаление черновиков в WordPress
07.02.2026
Как удалить заблокированные или замороженные плагины в WordPress
04.05.2026
Руководство по использованию REST API WordPress для разработчиков
20.11.2025
Как использовать WP-Cron для автоматизации задач в WordPress
14.01.2026