Сначала вам нужно определить 'rating-asc'
аргументы параметров сортировки в настраиваемой функции, подключенной к woocommerce_get_catalog_ordering_args
hook.
Как вариант сортировки «Сортировать по среднему рейтингу» существует, если вы посмотрите на существующие аргументы по умолчанию для сортировки продуктов по ключу "рейтинг", у вас есть этот массив:
$args = array(
'orderby' => array(
'meta_value_num' => 'DESC',
'ID' => 'ASC'
),
'order' => 'ASC',
'meta_key' => '_wc_average_rating'
);
Итак, вам просто нужно изменить 'meta_value_num' => 'DESC'
на 'meta_value_num' => 'ASC'
, тогда ваш правильный рабочий код будет быть как:
add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_ratings' );
function enable_catalog_ordering_by_ratings( $args ) {
if ( isset( $_GET['orderby'] ) && 'rating-asc' === $_GET['orderby']
&& isset($args['orderby']['meta_value_num']) ) {
$args['orderby']['meta_value_num'] = 'ASC';
}
return $args;
}
Теперь вы можете вставить новую опцию сортировки сразу после «Сортировать по средней оценке» существующей, например:
add_filter( 'woocommerce_catalog_orderby', 'catalog_orderby_ratings_asc_filter' );
function catalog_orderby_ratings_asc_filter( $options ){
$sorted_options =[];
foreach( $options as $key => $label ){
if( 'rating' === $key ) {
$sorted_options['rating'] = $options['rating'] . ' ' . __('(Desc)', 'woocommerce');
$sorted_options['rating-asc'] = $options['rating'] . ' ' . __('(Asc)', 'woocommerce');
} else {
$sorted_options[$key] = $label;
}
}
return $sorted_options;
}
Код входит в function. php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.
Добавить новую опцию каталога заказа по умолчанию в Woocommerce
Установить произвольную сортировку товаров по умолчанию в Woocommerce опцию сортировки