• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Сортировка товаров по весу

mariya-kos

Новичок
Доброго времени суток! Прошу помочь в выводе сортировки товаров. Сайт https://bon-bon.club/shop. Требуется организовать сортировку товаров по весу: от мин. к макс. и обратно. Погуглив, удалось отыскать код
Код:
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
  $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    if ( 'product_weight' == $orderby_value ) {
        $args['orderby'] = 'product_weight';//поле по которому сортируем
        $args['order'] = 'ASC';//по возрастанию (ASC) или убыванию (DESC)
        
    }
    return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['product_weight'] = 'Вес по возрастанию';
    return $sortby;
}
Добавляю его в functions.php своей темы и... результата нет. Более того, я даже понять не могу по какому принципу происходит сортировка. В чём ошибка, подскажите, пожалуйста! Я неверно указываю параметр сортировки? Или может дело в единицах измерения, может если убрать 'g', то всё встанет на свои места? Тогда подскажите, пожалуйста, где удалить единицы измерения?
 

mariya-kos

Новичок
Нашла ошибку) Выкладываю код, вдруг пригодится кому-то
Код:
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
  $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    if ( 'weasc' == $orderby_value ) {
        $args['orderby'] = 'meta_value_num';//поле по которому сортируем
        $args['order'] = 'ASC';//по возрастанию (ASC) или убыванию (DESC)
        $args['meta_key'] = '_weight';//по конкретному совпадению ключа
    }
if ( 'wedesc' == $orderby_value ) {
        $args['orderby'] = 'meta_value_num';//поле по которому сортируем
        $args['order'] = 'DESC';//по возрастанию (ASC) или убыванию (DESC)
        $args['meta_key'] = '_weight';//по конкретному совпадению ключа
    }
    return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) {
    $sortby['weasc'] = 'Вес по возрастанию';
 $sortby['wedesc'] = 'Вес по убыванию';
    return $sortby;
}
 
Сверху Снизу