Home > Mobile >  Display Reviews on an item under woocommerce_cart_item_name dynamically woocommerce
Display Reviews on an item under woocommerce_cart_item_name dynamically woocommerce

Time:10-23

I am trying to add the number of reviews and the star rating reviews on the product. I want to achieve something like this. enter image description here

The snippet I use to achieve it(not exactly but similar) is this

add_filter('woocommerce_cart_item_name', 'custom_item_display_on_cart', 10, 3);

function custom_item_display_on_cart($name, $cart_item, $item_key){
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$thumbnail = $_product->get_image();
$price = $_product->get_price_html(); 
$rating = woocommerce_review_display_rating();

$product_variation = '';
if(!empty($cart_item['variation_id']) && $cart_item['variation_id'] != 0 ){
   if(is_array($cart_item['variation']) && !empty($cart_item['variation'])){
      foreach ($cart_item['variation'] as $key => $value) {
         $product_variation .= ''.ucfirst(str_replace('attribute_pa_', '', $key)).' : '.ucfirst($value);
    }
}
}
    echo '<div > '. '<div >' . $thumbnail. '</div>' . '<div >' . '<div >' . $name . '</div>' . '<div >' . $product_variation . '</div>' .'<div >' . $price . '</div>'. '</div>' . ' </div>' .$rating; 

This is the result of the snippet that I used enter image description here

I am close on achieving it but the only problem I am facing is the start rating reviews and the number reviews. I tried using woocommerce_review_display_rating(); but it's not showing anything.

Thank you in advance!

CodePudding user response:

You can use the woocommerce_after_cart_item_name action hook to display reviews below the title. code will go in your active theme functions.php file.

add_filter('woocommerce_after_cart_item_name', 'woocommerce_after_cart_item_name', 10, 2);
function woocommerce_after_cart_item_name( $cart_item, $cart_item_key  ){
    $product      = wc_get_product( $cart_item['product_id'] );
    $rating_count = $product->get_rating_count();
    $review_count = $product->get_review_count();
    $average      = $product->get_average_rating();
    if ( $rating_count > 0 ) : ?>
        <div class="woocommerce-product-rating">
            <?php echo wc_get_rating_html( $average, $rating_count ); // WPCS: XSS ok. ?>
            <div class="count"><?php echo esc_html( $review_count ); ?> Reviews</div>
        </div>
    <?php endif;
}

Tested and Works

enter image description here

  • Related