На просторах интернета во всевозможных блогах и сайтах можно встретить практически один и тот-же код для woocommerce который позволяет добавить свои сортировки товаров.
Этот код работает и сортирует. Но сложности возникают при сортировке русских наименований товаров, при этом в комментариях под подобными материалами пользователи спрашивают почему вместо последовательности букв А,Б,В,Г и .тд вдруг товары сортируются в хаотичной последовательности, например идёт буква А, потом Б, потом буква Ф и т. д.
Ответ прост, в этом коде при подобной сортировке вам не нужно использовать $args[‘meta_key’] = «»;
// Варианты сортировки Woocommerce
add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_name_args');
function custom_woocommerce_get_catalog_ordering_name_args($args) {
$orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby'));
if ('name_list_asc' === $orderby_value) {
$args['orderby'] = 'name'; // поле для сортировки
$args['order'] = 'ASC'; //Направление сортировки
// $args['meta_key'] = '';
} elseif ('name_list_desc' === $orderby_value) {
$args['orderby'] = 'name';
$args['order'] = 'DESC';
// $args['meta_key'] = '';
}
return $args;
}
add_filter('woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_name_orderby');
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_name_orderby', 1);
Все возможные варианты полей для сортировки здесь