/** * Get product rating for a product. Please note this is not cached. * * @since 2.7.0 * @param WC_Product $product * @return float */ public static function get_average_rating_for_product(&$product) { global $wpdb; $count = $product->get_rating_count(); if ($count) { $ratings = $wpdb->get_var($wpdb->prepare("\n\t\t\t\tSELECT SUM(meta_value) FROM {$wpdb->commentmeta}\n\t\t\t\tLEFT JOIN {$wpdb->comments} ON {$wpdb->commentmeta}.comment_id = {$wpdb->comments}.comment_ID\n\t\t\t\tWHERE meta_key = 'rating'\n\t\t\t\tAND comment_post_ID = %d\n\t\t\t\tAND comment_approved = '1'\n\t\t\t\tAND meta_value > 0\n\t\t\t", $product->get_id())); $average = number_format($ratings / $count, 2, '.', ''); } else { $average = 0; } $product->set_average_rating($average); $data_store = $product->get_data_store(); $data_store->update_average_rating($product); return $average; }