Анатолий, огромное спасибо! Но я, не дождавшись ответа, уже реализовал сортировку.
Пока товаров было не много, перевел все атрибуты в произвольные поля.
В итоге в functions.php добавил код и все заработало:
/************* Добавляем сортировку по произвольным полям **************/
add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args');
function custom_woocommerce_get_catalog_ordering_args( $args ) {
global $wp_query;
if (isset($_GET['orderby'])) {
switch ($_GET['orderby']) :
case 'dx_name' :
$args['orderby'] = 'name';
$args['order'] = 'ASC';
$args['meta_key'] = '';
break;
case 'dx_popularity' :
$args['order'] = 'ASC';
$args['meta_key'] = 'dx_popularity';
$args['orderby'] = 'meta_value_num';
break;
case 'dx_price' :
$args['order'] = 'ASC';
$args['meta_key'] = 'dx_price';
$args['orderby'] = 'meta_value_num';
break;
case 'dx_distance' :
$args['order'] = 'ASC';
$args['meta_key'] = 'dx_distance';
$args['orderby'] = 'meta_value_num';
break;
case 'dx_area' :
$args['order'] = 'ASC';
$args['meta_key'] = 'dx_area';
$args['orderby'] = 'meta_value_num';
break;
endswitch;
}
return $args;
}
/**
* Добавляем способ сортировки в выпадающий список
*/
add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby');
function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['dx_name'] = 'Сортировка по умолчанию';
$sortby['dx_popularity'] = 'Сортировка по популярности';
$sortby['dx_price'] = 'Сортировка по цене за 1 м²';
$sortby['dx_distance'] = 'Сортировка по расстоянию от центра Москвы';
$sortby['dx_area'] = 'Сортировка по площади комнат';
return $sortby;
}
Пока товаров было не много, перевел все атрибуты в произвольные поля.
В итоге в functions.php добавил код и все заработало: