平均最受好评的产品平均评价为avg&没有评论

时间:2015-11-22 02:06:27

标签: wordpress woocommerce

woocommerce有一个短代码[top_rated_products],您可以在页面中使用它。 显示最高评级产品(每种产品的评论评级)与其平均值相比较。 问题是,它没有考虑每个产品中有多少评论。 换句话说,我想要做的就是像下面那样做空 产品55 - 评级5 - 评论数目8 产品38 - 评级5 - 评论数目5 产品22 - 评级5 - 评论数量2

它正在显示它,按AVG评级和发布日期排序(如果我已经理解的话)。所以它看起来像这样

产品38 - 评级5 - 评论数量5 产品55 - 评级5 - 评论数目8 产品22 - 评级5 - 评论数量2

我发现(如果我是对的)订单正在进行中 可湿性粉剂内容/插件/ woocommerce /包括/类-WC-query.php 在功能下 公共职能order_by_rating_post_clauses

我添加了以下代码,但我看不到改进。我有什么想法我做错了吗? 提前谢谢你

public function order_by_rating_post_clauses( $args ) {
    global $wpdb;

    $args['fields'] .= ", AVG( $wpdb->commentmeta.meta_value ) as average_rating ";

    //***** ADDED BY ME ************
      $args['fields'] .= ", COUNT( $wpdb->commentmeta.meta_value ) as count_rating ";
    //***** ADDED BY ME ENDS *******

    $args['where'] .= " AND ( $wpdb->commentmeta.meta_key = 'rating' OR $wpdb->commentmeta.meta_key IS null ) ";

    $args['join'] .= "
        LEFT OUTER JOIN $wpdb->comments ON($wpdb->posts.ID = $wpdb->comments.comment_post_ID)
        LEFT JOIN $wpdb->commentmeta ON($wpdb->comments.comment_ID = $wpdb->commentmeta.comment_id)
    ";

   //****** ORIGINAL LINE ***********
   // $args['orderby'] = "average_rating DESC, $wpdb->posts.post_date DESC";
   //****** REPLACED BY *************
   $args['orderby'] = "average_rating DESC, count_rating, $wpdb->posts.post_date DESC";


    $args['groupby'] = "$wpdb->posts.ID";

    return $args;
}

0 个答案:

没有答案