In a recent blog post, we discussed a way to display “Leave a Review” buttons inside the WooCommerce My Account page; I shared a solution that adds a custom table listing purchased products, but this time, we’re enhancing the default Downloads table by adding a new column.
This snippet modifies the WooCommerce My Account downloads section, ensuring customers can leave product reviews directly from their available downloads. The button appears only for products that haven’t been reviewed yet.
Here’s the PHP snippet to implement this feature!

PHP Snippet: Display Review Buttons in WooCommerce My Account Downloads
The snippet first adds a new “Review” column to the existing downloads table using woocommerce_account_downloads_columns
.
Then, it retrieves the customer’s previous reviews and checks if a review for the downloaded product already exists. If not, it displays a “Leave a Review” button linking to the product’s review section. If the review has already been submitted, it simply shows a “Reviewed” text instead.
This approach ensures that customers are encouraged to review their downloads while keeping the WooCommerce My Account page clean and user-friendly!
/**
* @snippet Review Products @ My Account Downloads
* @tutorial https://businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 9
* @community https://businessbloomer.com/club/
*/
add_filter( 'woocommerce_account_downloads_columns', 'bbloomer_add_review_column' );
add_action( 'woocommerce_account_downloads_column_review', 'bbloomer_display_review_button' );
function bbloomer_add_review_column( $columns ) {
$columns['review'] = __( 'Review', 'woocommerce' );
return $columns;
}
function bbloomer_display_review_button( $download ) {
$product = wc_get_product( $download['product_id'] );
if ( ! $product ) {
return;
}
$customer = new WC_Customer( get_current_user_id() );
$reviewed_products = [];
$comments = get_comments( array(
'author_email' => $customer->get_billing_email(),
'type' => 'review',
'status' => 'approve',
));
foreach ( $comments as $comment ) {
$reviewed_products[] = $comment->comment_post_ID;
}
if ( ! in_array( $product->get_id(), $reviewed_products ) ) {
echo '<a class="button alt" href="' . esc_url( get_permalink( $product->get_id() ) . '#tab-reviews' ) . '">' . esc_html__( 'Add a review', 'woocommerce' ) . '</a>';
} else {
echo esc_html__( 'Reviewed', 'woocommerce' );
}
}