На просторах интернета во всевозможных блогах и сайтах можно встретить практически один и тот-же код для 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);
Все возможные варианты полей для сортировки здесь