Пожалуйста, помогите, импортирую XML в WordPress через WP All Import.

Вопрос или проблема

Я использую Elementor, WooCommerce и WP All Import Pro для импорта XML-файла с данными о автомобиле. Моя проблема заключается в том, что оборудование автомобиля варьируется между ними всеми и его много, поэтому я не могу создавать атрибуты или теги для всех вручную, я хочу автоматически импортировать каждую деталь оборудования автомобиля для отображения. Например, небольшой фрагмент:

                <equipment>
                    <descritpion>ABS</descritpion>
                    <manufacturer_code>FRE02</manufacturer_code>
                    <normalized_code>FRE02</normalized_code>
                    <type>standard</type>
                </equipment>
                <equipment>
                    <descritpion>Airbag driver</descritpion>
                    <manufacturer_code>SIC01</manufacturer_code>
                    <normalized_code>SIC01</normalized_code>
                    <type>standard</type>
                </equipment>

Таким образом, в этом случае я бы хотел сохранить ABS и Airbag driver как атрибуты моего продукта или даже просто сделать это как пост. Что бы ни работало для импорта каждого атрибута автомобиля. Или существует способ работать с XML-данными напрямую в Elementor или WP-редакторе? Большое спасибо за вашу помощь.

Я пробовал некоторый короткий код, который поддержка WP All Import прислала мне, но это не очень помогло, так что я сам по себе. Я хотел бы или сохранить это как продукт, или сделать из этого пост, может быть, у кого-то из вас есть лучшее предложение. Пока ничего не решено, и я уже несколько дней пытаюсь заставить это работать. Это моя последняя надежда, ребята.

Редактировать:
Участник поддержки WP All Import дал мне этот фрагмент кода, но я не знаю, что с ним делать или как его изменить, чтобы он работал с моим XML-файлом…

/**
 * @param $post_id
 * @param $xml
 */
function wp_programator_automatically_import_wpai_params($post_id, $xml)
{
    $atts = [];

    // $xml - это объект SimpleXML
    // Перебираем атрибуты PARAM и добавляем их к продукту
  foreach ( $xml->PARAM as $param ) {
      // Получаем имя атрибута
    $name = $param->PARAM_NAME->__toString();
    // Получаем значение атрибута
    $value = $param->VAL->__toString();
    // Таксономия атрибутов WC начинается с префикса pa_, создаем слаг здесь
    $slug = 'pa_'.wc_sanitize_taxonomy_name($name);

    // Создаем атрибут
    wc_create_attribute(['name' => $name]);

    // Добавляем продукт в таксономию, которую мы только что создали
    wp_set_object_terms( $post_id, wc_sanitize_taxonomy_name($value), $slug, true );

    // Добавляем к данным атрибутов
        // Это необходимо для отображения атрибутов в админке WP
    $atts[$slug] = [
        'name'=> $slug,
        'value'=> $value,
        'is_visible' => '1',
        'is_variation' => '0',
        'is_taxonomy' => '1'
        ];
    }

    // Обновляем мета _product_attributes - это то место, где хранятся данные об атрибутах для продуктов
  $product = wc_get_product($post_id);
  $product->update_meta_data('_product_attributes', $atts);
  $product->save();
}```

Ответ или решение

Импорт XML-файла с данными о автомобилях в WordPress с помощью WP All Import, особенно при использовании таких плагинов, как Elementor и WooCommerce, может показаться сложной задачей, если речь идет о множестве разнообразного оборудования. В данном случае проблема заключается в невозможности вручную создать атрибуты или теги для всего оборудования автомобиля, которое необходимо импортировать и отображать. Рассмотрим, как можно автоматизировать этот процесс и решить вашу задачу.

ТЕОРИЯ

Импорт данных в WordPress требует не только правильной настройки инструмента WP All Import, но и понимания структуры данных, с которыми вы работаете, например, XML. Вы описали структуру XML, в которой каждый элемент <equipment> содержит описание, код производителя, нормализованный код и тип оборудования. Задача заключается в преобразовании этих элементов в атрибуты продукта WooCommerce.

ПРИМЕР

Можно использовать предоставленный членом команды поддержки WP All Import код как базу для импорта данных. Однако, его необходимо адаптировать под вашу конкретную XML-структуру. Код предполагает, что вы работаете с атрибутами WooCommerce, создавая их по мере необходимости.

ПРИМЕНЕНИЕ

1. Анализ структуры XML

Прежде всего, убедитесь, что вы понимаете структуру вашего XML-файла. В вашем случае, каждый элемент <equipment> содержит:

  • <description> — описание оборудования
  • <manufacturer_code> — код производителя
  • <normalized_code> — нормализованный код
  • <type> — тип (например, стандартный)

Эти данные должны быть преобразованы в свойства или атрибуты в ваших продуктах WooCommerce.

2. Настройка WP All Import

Для начала настройте импорт с использованием WP All Import:

  • Создайте новый импорт и загрузите ваш XML-файл.
  • Примите во внимание установку родительских элементов и настройте соответствие вашему XML.

3. Адаптация скрипта

Теперь адаптируем предоставленный код. Основные изменения, которые необходимо внести, связаны с корректной работой с дочерними элементами <equipment>:

function wp_import_equipment($post_id, $xml) {
    $atts = [];

    // Перебор всех элементов <equipment>
    foreach ($xml->equipment as $equip) {
        // Получение описания оборудования
        $description = (string)$equip->description;

        // Создание переменной для хранения данных атрибута
        $value = sanitize_text_field($description);

        // Создание и присвоение атрибута WooCommerce
        if (!empty($value)) {
            $slug = 'pa_' . wc_sanitize_taxonomy_name('equipment');

            // Проверка существования атрибута, если нет — создание
            if (!taxonomy_exists($slug)) {
                wc_create_attribute([
                    'name' => __('Equipment', 'your-domain'),
                    'slug' => $slug,
                    'type' => 'select',
                    'order_by' => 'menu_order',
                    'has_archives' => false,
                ]);
            }

            // Привязка значения к продукту
            wp_set_object_terms($post_id, $value, $slug, true);

            // Добавление в метаданные продукта
            $atts[$slug] = [
                'name' => $slug,
                'value' => $value,
                'is_visible' => '1',
                'is_variation' => '0',
                'is_taxonomy' => '1'
            ];
        }
    }

    // Обновление метаданных продукта
    $product = wc_get_product($post_id);
    $product->update_meta_data('_product_attributes', $atts);
    $product->save();
}

4. Интеграция функций

Добавьте эту функцию в ваш файл functions.php вашей темы, или используйте её в виде плагина.

5. Проверка работы

После импортирования проверьте правильность импорта данных в WooCommerce. Открывайте каждый продукт и убедитесь, что атрибуты были созданы правильно, а описание оборудования отображается в необходимом виде.

ЗАКЛЮЧЕНИЕ

Внедрение автоматизации для импортирования сложных данных с помощью WP All Import и WooCommerce требует адаптации кода. Однако благодаря этому подходу вы сможете эффективно управлять разнообразными данными автомобильного оборудования, минимизируя ручную работу и повышая точность импорта и последующего отображения данных. Убедитесь, что вы внимательно протестировали каждую часть процесса, чтобы интеграция проходила гладко.

Оцените материал
Добавить комментарий

Капча загружается...