Задать вопрос
@alexiusgrey

Как отсортировать товары в каталоге по значению мета-поля?

Мне надо добавить для каталога новую сортировку по мета-полю, и сделать ее по умолчанию.
Поле числовое. Надо чтобы сначала шли с меньшим значением, и увеличивались у большему.
Я добавляю новый 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 нужно что-то другое?
Где ощибаюсь?
  • Вопрос задан
  • 10 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы