А теперь ВОПРОС: Как мне, когда я нахожусь в основном цикле вывода товаров или перед ним, узнать была ли сортировка по умолчанию (default) или пользователь что-то выбрал?
- 1 вариант, посмотреть $_REQUEST. Когда используется сортировка то, там что то есть.
- 2 вариант посмотреть global wp_query при разной сортировке, узнать что там меняется.
Тут нужно прикинуть насколько много товаров в каждой категории и сколько категорий. Я подскажу самый легкий способ реализации через кастомные поля. Для каждой карточки товара нужно создавать кастомное поле с названием 'order_$term_id'. Т.е. в зависимости от количество рубрик в которых находится товар, будет количество таких полей. Можно написать скрипт который сам будет создавать эти поля в зависимости от количества выбранных категорий. В эти поля нужно проставлять числа позиций. К примеру у футболок будет число от 0 до 100, у шорт от 100 до 200 и т.д. Здесь не принципиально и нужно делать как нужно. Можно всем шортам проставить одно число или разное в зависимости нужно ли сортировать дополнительно внутри группы шорт.
Получается что у всех карточек категории с id 16 будет кастомное поле order_16 с значениями внутри. Важно что бы хотя бы 0 там стоял.
Ну и последним шагом нужно находясь в категории перехватывать запрос wp_query и изменять сортировку
$args = array(
'meta_key' => 'order_16',
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
add_action( 'pre_get_posts', 'modify_main_query' );
function filters_modify_main_query( $query ) {
return $query;
}
Делать это нужно, если конечно в $_REQUEST в ячейки сортировки нет ничего.