Use contact form for reviews

I have a page on a woocommerce site, which I drive users to, to ask for a review…The area for them to leave a review is actually a contact form. I have done it this way, so that they are automatically added to a MailChimp list for email follow up when they fill in the review form. (contact form 7 supports this mailchimp integration).

What I would like to do is automatically/programmatically take that contact form info and fill in an actual review for a product in its comments section, once the user clicks submit.

Is that theoretically possible?

I have limited programming understanding so want to make sure it’s possible, so that I can decide whether to hire someone else, other than the baffoon I am currently working with.

Answer

First add 1-5 * (star) Radio button on comment form.

add_action( 'comment_form_logged_in_after', 'add_review_field_to_comment_form' );
add_action( 'comment_form_after_fields', 'add_review_field_to_comment_form' );
function add_review_field_to_comment_form () {
echo '<p class="comment-form-rating">'.
'<label for="rating">Rating</label>
<span class="commentratingbox">';
    for( $i=1; $i <= 5; $i++ )
    echo '<span class="commentrating"><input type="radio" name="rating" id="rating" value="'. $i .'"/>'. $i .'</span>';
echo'</span></p>';
}

Now save the Rating value to comment meta.

add_action( 'comment_post', 'save_comment_rating_data' );
function save_comment_rating_data( $comment_id ) {
if ( ( isset( $_POST['rating'] ) ) && ( $_POST['rating'] != '') )
$rating = wp_filter_nohtml_kses($_POST['rating']);
add_comment_meta( $comment_id, 'rating', $rating );
}

Now show the rating if there is any.

add_filter( 'comment_text', 'display_rating_on_comment');
function display_rating_on_comment( $text ){
if( $commentrating = get_comment_meta( get_comment_ID(), 'rating', true ) ) {
    $commentrating = 'Rating : '.$commentrating.' STAR';
    $text = $text . $commentrating;
    return $text;
} else {
    return $text;
}
}

Attribution
Source : Link , Question Author : Ben Ellis-Gowland , Answer Author : JItendra Rana

Leave a Comment