Фильтрация атрибутов при импорте

Фильтр wms_attribute_action позволяет изменить список атрибутов перед их импортом на сайт. С его помощью можно реализовать один из двух вариантов фильтрации:

  • Белый список — импортировать только указанные атрибуты.
  • Черный список — исключить из импорта определённые атрибуты.

Важно: используйте только один из приведённых ниже вариантов. Одновременное использование обоих примеров приведёт к конфликту, так как они используют один и тот же фильтр.


Вариант 1. Белый список

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

Добавьте следующий код в файл functions.php активной темы или в собственный плагин:

add_filter('wms_attribute_action', 'msw_attributes_allow_list', 10);

function msw_attributes_allow_list($attributes)
{
    $allowedAttributes = array(
        'Имя вашего атрибута 1',
        'Имя вашего атрибута 2',
        'Имя вашего атрибута 3',
    );

    $newAttributes = [];

    foreach ($attributes as $attribute) {
        if (in_array($attribute['name'], $allowedAttributes)) {
            $newAttributes[] = $attribute;
        }
    }

    return $newAttributes;
}

Как работает

Во время импорта функция получает список всех атрибутов товара и оставляет только те, которые перечислены в массиве $allowedAttributes.

Пример

$allowedAttributes = array(
    'Цвет',
    'Размер',
    'Материал',
);

В результате будут импортированы только атрибуты:

  • Цвет
  • Размер
  • Материал

Все остальные атрибуты будут проигнорированы.


Вариант 2. Черный список

Используйте этот вариант, если необходимо исключить несколько конкретных атрибутов, а все остальные импортировать.

Добавьте следующий код:

add_filter('wms_attribute_action', 'msw_attributes_deny_list', 10);

function msw_attributes_deny_list($attributes)
{
    $excludedAttributes = array(
        'Имя атрибута 1',
        'Имя атрибута 2',
        'Имя атрибута 3',
    );

    $newAttributes = [];

    foreach ($attributes as $attribute) {
        if (!in_array($attribute['name'], $excludedAttributes)) {
            $newAttributes[] = $attribute;
        }
    }

    return $newAttributes;
}

Как работает

Функция получает список всех атрибутов товара и удаляет из него только те атрибуты, которые перечислены в массиве $excludedAttributes.

Пример

$excludedAttributes = array(
    'Вес',
    'Объем',
    'Артикул поставщика',
);

В результате:

  • атрибуты «Вес», «Объем» и «Артикул поставщика» не будут импортированы;
  • все остальные атрибуты будут успешно загружены на сайт.

Важные замечания

  • Сравнение выполняется по полю name.
  • Названия атрибутов должны полностью совпадать с названиями, получаемыми при импорте.
  • Учитываются регистр символов, пробелы и специальные символы.
  • Если при использовании белого списка не будет найдено ни одного совпадения, атрибуты импортированы не будут.
  • Если список исключений в черном списке пуст, будут импортированы все атрибуты.

Какой вариант выбрать?

ЗадачаРекомендуемый вариант
Нужно импортировать только несколько атрибутовБелый список ($allowedAttributes)
Нужно исключить несколько атрибутов, а остальные оставитьЧерный список ($excludedAttributes)

Белый список удобно использовать, когда из большого количества атрибутов требуется импортировать лишь несколько. Черный список больше подходит в случаях, когда необходимо исключить лишь несколько служебных или ненужных атрибутов, оставив импорт остальных без изменений.

← Предыдущая запись Обновление 0,5,6 Следующая запись → Снижение нагрузки. Ускорение обработки товаров