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