By default with WooCommerce, product reviews display by default in the ‘Reviews’ tab in a single product page. What we are going to show you today is how you can display them on any page of your website using a shortcode. This can be especially useful if you are using custom sales pages and need to show reviews on specific pages about a certain product.
So let’s dig into this…
Creating the WooCommerce Product Reviews Shortcode
Firstly, we need to add some code to our functions.php
file:
/**
* WooCommerce Product Reviews Shortcode
*/
add_shortcode( 'product_reviews', 'silva_product_reviews_shortcode' );
function silva_product_reviews_shortcode( $atts ) {
if ( empty( $atts ) ) return '';
if ( ! isset( $atts['id'] ) ) return '';
$comments = get_comments( 'post_id=' . $atts['id'] );
if ( ! $comments ) return '';
$html .= '<div class="woocommerce-tabs"><div id="reviews"><ol class="commentlist">';
foreach ( $comments as $comment ) {
$rating = intval( get_comment_meta( $comment->comment_ID, 'rating', true ) );
$html .= '<li class="review">';
$html .= get_avatar( $comment, '60' );
$html .= '<div class="comment-text">';
if ( $rating ) $html .= wc_get_rating_html( $rating );
$html .= '<p class="meta"><strong class="woocommerce-review__author">';
$html .= get_comment_author( $comment );
$html .= '</strong></p>';
$html .= '<div class="description">';
$html .= $comment->comment_content;
$html .= '</div></div>';
$html .= '</li>';
}
$html .= '</ol></div></div>';
return $html;
}
Adding the Shortcode
Once you’ve added the code to your functions.php
file, we can now use the following shortcode on any page you like; [product_reviews id="ID"]
.
Simply replace the text ID
with the product for which you want to output your customer reviews and that is simply all there is to it!
I don’t quite understand with your last statement
“Simply replace the text ID with the product for which you want to output your customer reviews and that is simply all there is to it!”
I had no idea what to replace and where I’ll get the ID.
Hi,
These code works great thank you.
I want to also show the date of the review, is that possible please?
Many thanks,
Petra
Hi Natahan, where I can put the extra code? “global $product;
$id = $product->get_id();”
Thanks.
Hi Nathan
Can i add multiple IDs separated by commas? I’d like to have a page where all the product reviews are displayed in random order.
Thank you!
How can I get all reviewes from only one certain category?
hello,how to make woocommerce product reviews in a single page,ervey product has its review page in one single page,when one product has many reviews show read more link,we click read more,and visit the product review page,which can use yoast SEO plugin to make SEO title and others,I read your blog something like my ideas.
How can I show only 5 comments for each products???
Hi there
is ist possible to show all reviews from products of a specific product category?
Hi Nathan,
Thank you for this shortcode it’s exactly what i needed ! It works fine when i specify the ID.
I try to get automatically the id product but i don’t know where to put the code you gave :
global $product;
$id = $product->get_id();
Can you give me the full code please.
Hi! This is mostly working great, just a few more tweaks. I am wondering if I can set up comment moderation and only show reviews after I approve?
Hi, is possible get reviews only with 4 and 5 stars? How can i do? Thanks!
How to include product thumbnail image in reviews?
Thank you it helped a lot.
This works great, but I need to add a filter to only display approved reviews. I just found out that spam reviews are showing.