Wordpress woocommerce平均最高评级产品由avg&;检讨数目

Wordpress woocommerce平均最高评级产品由avg&;检讨数目,wordpress,woocommerce,Wordpress,Woocommerce,woocommerce有一个短代码[顶级产品],您可以在页面中使用它。 显示最高评级的产品(每个产品的审查评级)与其平均值之间的差距。 问题是,它没有考虑每个产品中有多少评论。 换句话说,我想做的是像下面这样做空 产品55-评级5-审核次数8 产品38-评级5-审核次数5 产品22-评级5-审核次数2 目前它正在显示它,按平均评级和发布日期排序(如果我理解得很好的话)。看起来是这样的 产品38-评级5-审核次数5 产品55-评级5-审核次数8 产品22-评级5-审核次数2 我发现(如果我是对的话

woocommerce有一个短代码[顶级产品],您可以在页面中使用它。 显示最高评级的产品(每个产品的审查评级)与其平均值之间的差距。 问题是,它没有考虑每个产品中有多少评论。 换句话说,我想做的是像下面这样做空 产品55-评级5-审核次数8 产品38-评级5-审核次数5 产品22-评级5-审核次数2

目前它正在显示它,按平均评级和发布日期排序(如果我理解得很好的话)。看起来是这样的

产品38-评级5-审核次数5 产品55-评级5-审核次数8 产品22-评级5-审核次数2

我发现(如果我是对的话)订单是在 wp content/plugins/woocommerce/includes/class-wc-query.php 在功能下 公共职能秩序(按)评级(按)后(按)条款

我已经添加了以下代码,但我看不到有什么改进。你知道我做错了什么吗? 先谢谢你




您是否尝试过$args['orderby']=“average_rating DESC,$wpdb->posts.post_date DESC,count_rating”?谢谢你的回答。是的,我也试过了。我还尝试了$args['orderby']=“average_rating DESC,$wpdb->posts.post_date DESC,count_rating DESC”;似乎我所做的任何更改都不会影响订单。您是否尝试过$args['orderby']=“average_rating DESC,$wpdb->posts.post_date DESC,count_rating”?谢谢你的回答。是的,我也试过了。我还尝试了$args['orderby']=“average_rating DESC,$wpdb->posts.post_date DESC,count_rating DESC”;看来我所做的任何改变都不会影响订单。
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;
}