2013-02-12 3 views
2

Я пытаюсь получить возможность сортировать продукты на странице категории товаров в Woocommerce по их среднему рейтингу.Сортировать продукты по рейтингу в woocommerce

Я нашел код, чтобы поместить рейтинг на страницу продукта, добавлен код функции functions.php (см. Ниже), но рейтинг выбора не делает ничего.

Что такое meta_key, которую мне нужно вызвать (или создать), чтобы заставить это работать?

add_filter('woocommerce_get_catalog_ordering_args','custom_woocommerce_get_catalog_ordering_args'); 

function custom_woocommerce_get_catalog_ordering_args($args) {  
    if (isset($_SESSION['orderby'])) { 

     switch ($_SESSION['orderby']) : 

      case 'date_asc' : 

       $args['orderby'] = 'date'; 

       $args['order'] = 'asc'; 

       $args['meta_key'] = ''; 

      break; 

      case 'price_desc' : 

       $args['orderby'] = 'meta_value_num'; 

       $args['order'] = 'desc'; 

       $args['meta_key'] = '_price'; 

      break; 

      case 'title_desc' : 

       $args['orderby'] = 'title'; 

       $args['order'] = 'desc'; 

       $args['meta_key'] = ''; 

      break; 

      case 'rating_desc' : 

       $args['orderby'] = 'rating'; 

       $args['order'] = 'desc'; 

       $args['meta_key'] = ''; 

      break; 

     endswitch; 

    } 

    return $args;  
} 

add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); 

function custom_woocommerce_catalog_orderby($sortby) {    
    $sortby['rating_desc'] = 'Rating'; 
    $sortby['title_desc'] = 'Reverse-Alphabetically'; 

    $sortby['price_desc'] = 'Price (highest to lowest)'; 

    $sortby['date_asc'] = 'Oldest to newest'; 

    return $sortby;  
} 

ответ

2

Попробуйте изменить ваш случай «rating_desc» к этому

case 'rating_desc' : 

    add_filter('posts_clauses', array($this, 'order_by_rating_post_clauses')); 

break; 

Найдено, что часть кода в включает в себя \ класс-туалет-query.php на линии 492 и далее после некоторого копания, когда у меня было аналогичный вопрос. Если вам нужна основная функция order_by_rating_post_clauses, она находится в том же файле на линии 547.

Надеюсь, это поможет!

Смежные вопросы