2013-02-12 4 views
2

J'essaie d'obtenir la possibilité de trier les produits sur une page de catégorie de produit dans Woocommerce par leur note moyenne.Trier les produits par classement dans woocommerce

J'ai trouvé le code pour placer l'évaluation sur la page du produit, ajouté le code à functions.php (voir ci-dessous) mais la note de sélection ne fait rien.

Quelle est la méta_key que j'ai besoin d'appeler (ou de créer) pour que cela fonctionne?

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;  
} 

Répondre

2

Essayez de changer votre cas 'rating_desc' à ce

case 'rating_desc' : 

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

break; 

Trouvé ce morceau de code dans comprend \ class-wc-query.php à la ligne 492 en avant après quelques recherches quand j'avais un problème similaire. Si vous avez besoin de la fonction de base order_by_rating_post_clauses, c'est dans le même fichier à la ligne 547.

Espérons que ça aide!

Questions connexes