Мне надо добавить для каталога новую сортировку по мета-полю, и сделать ее по умолчанию.
Поле числовое. Надо чтобы сначала шли с меньшим значением, и увеличивались у большему.
Я добавляю новый switch-case для сортировки
add_filter('woocommerce_get_catalog_ordering_args', 'wh_catalog_ordering_args');
function wh_catalog_ordering_args($args) {
global $wp_query;
if (isset($_GET['orderby'])) {
switch ($_GET['orderby']) {
case 'sort_field' :
$args['order'] = 'ASC';
$args['meta_key'] = '_sort_field';
$args['orderby'] = 'meta_value_num';
break;
}
}
return $args;
}
Добавляю эту опцию в список и в кастомайзер, чтобы там можно было ее проставить как дефолтную, и опция там появляется
//To add to Dashboard > WooCommerce > Settings > Products > Display.
add_filter( 'woocommerce_default_catalog_orderby_options', 'wh_catalog_orderby' );
add_filter('woocommerce_catalog_orderby', 'wh_catalog_orderby');
function wh_catalog_orderby($sortby) {
$sortby['sort_field'] = 'Sort by Power';
return $sortby;
}
И еще делаю ее кодом как дефолтную
//to make this sorting default
add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {
$args['order'] = 'ASC';
$args['meta_key'] = '_sort_field';
$args['orderby'] = 'meta_value_num';
return $args;
}
Опции есть, но сортировка не работает. Товары со значением поля 15 могут стоять раньше тех, которые со значением 12.
Когда пробовал $args['orderby'] = 'modified', то срабатывало, может для meta_value_num нужно что-то другое?
Где ощибаюсь?