Фильтр 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) |
Белый список удобно использовать, когда из большого количества атрибутов требуется импортировать лишь несколько. Черный список больше подходит в случаях, когда необходимо исключить лишь несколько служебных или ненужных атрибутов, оставив импорт остальных без изменений.
