2013-02-12 45 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

嘗試一些挖後向前在行492改變你的情況「rating_desc」這個

case 'rating_desc' : 

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

break; 

發現在這段代碼包含\類-WC-query.php當我有一個類似的問題。如果您需要核心功能order_by_rating_post_clauses,它在547行的同一個文件中。

希望它有幫助!