WooCommerce — как отсортировать атрибуты в виджете?
Плагины для фильтров в теме не стоят. Используется дефолтный фильтр от вукоммерса.
Гутенберг для постов отключен, для виджетов нет.
В атрибутах в админке сортировка стоит правильная - по числовому имени name_num.
Виджет игнорирует и сортирует по алфавиту, так что 8 идет после 25.
Я пробовал менять сортировку - игнорирует любую - и по умолчанию. и по id.
Если отключить гутенберг для виджета, то эти виджеты, уже добавленные с гутенбергом, сохраняют свой внешний вид на фронт-энде, а в админке превращаются в блок примерно такого вида
<!-- wp:woocommerce/filter-wrapper {"filterType":"attribute-filter","heading":"Filter by attribute","className":""} --> <div class="wp-block-woocommerce-filter-wrapper"><!-- wp:heading {"level":3} --> <h3 class="wp-block-heading">Мощность (кВт)</h3> <!-- /wp:heading --> <!-- wp:woocommerce/attribute-filter {"className":"inventor-filter","attributeId":13,"heading":"","lock":{"remove":true}} --> <div class="wp-block-woocommerce-attribute-filter is-loading inventor-filter" data-attribute-id="13" data-show-counts="true" data-query-type="or" data-heading="" data-heading-level="3"><span aria-hidden="true" class="wc-block-product-attribute-filter__placeholder"></span></div> <!-- /wp:woocommerce/attribute-filter --></div> <!-- /wp:woocommerce/filter-wrapper --> |
<!-- wp:woocommerce/filter-wrapper {"filterType":"attribute-filter","heading":"Filter by attribute","className":""} --> <div class="wp-block-woocommerce-filter-wrapper"><!-- wp:heading {"level":3} --> <h3 class="wp-block-heading">Мощность (кВт)</h3> <!-- /wp:heading --> <!-- wp:woocommerce/attribute-filter {"className":"inventor-filter","attributeId":13,"heading":"","lock":{"remove":true}} --> <div class="wp-block-woocommerce-attribute-filter is-loading inventor-filter" data-attribute-id="13" data-show-counts="true" data-query-type="or" data-heading="" data-heading-level="3"><span aria-hidden="true" class="wc-block-product-attribute-filter__placeholder"></span></div> <!-- /wp:woocommerce/attribute-filter --></div> <!-- /wp:woocommerce/filter-wrapper -->
Может быть есть вариант вписать в этот блок условие для сортировки? Что-то типа {{sortby: name_num}} - только как правильно?
Плагинов то да, много, и у меня есть сниипет для фильтра, не плагин, но если есть вариант вписать, то хотелось бы лучше оставить по максимуму как есть, только отсортировать.
Буду очень благодарен за идеи как вписать эту сортировку или как по правильному отсортировать
Дополнительно
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Порядок атрибутов в WooCommerce зависит от того, где именно они выводятся: в виджете фильтра, на странице товара или в вариациях. Для глобальных атрибутов порядок можно настроить в админке.
Проверьте: «Товары → Атрибуты». У каждого атрибута есть настройка сортировки: по имени, числовая, по ID, пользовательский порядок. Если нужен ручной порядок, выберите «Пользовательский порядок» и отсортируйте термины внутри атрибута.
Если это стандартный виджет фильтра по атрибуту, он обычно берёт порядок терминов из WooCommerce. После изменения очистите transients:
WooCommerce → Статус → Инструменты → Очистить transients
Если нужен кастомный порядок в коде:
$terms = get_terms([ 'taxonomy' => 'pa_color', 'hide_empty' => true, 'orderby' => 'menu_order', ]);
Если используется фильтр-плагин, порядок может задаваться в настройках самого плагина, а не WooCommerce. Тогда ищите настройки sorting/order в модуле фильтра.
Итог: сначала настройка атрибута в WooCommerce, потом очистка кэша, и только если не помогает — правка вывода виджета или фильтр-плагина.