0, 'order_id' => 0 ], $atts ); $vendor_id = (int) ( $atts['vendor_id'] ?: ( $_GET['vendor_id'] ?? 0 ) ); $order_id = (int) ( $atts['order_id'] ?: ( $_GET['order_id'] ?? 0 ) ); if ( ! $vendor_id ) return ''; $vendor = get_user_by( 'id', $vendor_id ); if ( ! $vendor ) return ''; ob_start(); ?>

Write a Review for display_name ); ?>

= 1; $i-- ) : ?> >
get_results( $wpdb->prepare( "SELECT r.*, u.display_name FROM {$wpdb->prefix}vv_vendor_reviews r LEFT JOIN {$wpdb->prefix}users u ON r.customer_id=u.ID WHERE r.vendor_id=%d ORDER BY r.created_at DESC LIMIT 20", $vendor_id ) ); if ( ! $reviews ) return '
No reviews yet. Be the first!
'; $avg = array_sum( array_column( (array) $reviews, 'rating' ) ) / count( $reviews ); $out = '
'; $out .= '
' . number_format( $avg, 1 ) . '
'; $out .= '
'; $out .= '
' . self::stars( round( $avg ) ) . '
'; $out .= '
' . count( $reviews ) . ' review' . ( count( $reviews ) !== 1 ? 's' : '' ) . '
'; $out .= '
'; foreach ( $reviews as $r ) { $initials = strtoupper( substr( $r->display_name, 0, 1 ) ); $out .= '
'; $out .= '
'; $out .= '
' . esc_html( $initials ) . '
'; $out .= '
'; $out .= '
'; $out .= '' . esc_html( $r->display_name ) . ''; $out .= '
' . self::stars( $r->rating ) . '
'; $out .= '
'; $out .= '
' . esc_html( date( 'M j, Y', strtotime( $r->created_at ) ) ) . '
'; if ( $r->is_verified ) $out .= ' Verified Purchase'; $out .= '
'; $out .= '

' . esc_html( $r->review ) . '

'; if ( $r->vendor_response ) { $out .= '
Vendor reply: ' . esc_html( $r->vendor_response ) . '
'; } $out .= '
'; } return $out; } private static function stars( $rating ) { $out = ''; for ( $i = 1; $i <= 5; $i++ ) { $out .= ''; } return $out; } public static function render_vendor_reviews( $atts = [] ) { if ( ! is_user_logged_in() || ! VV_Helpers::is_vendor() ) return ''; $uid = get_current_user_id(); global $wpdb; $reviews = $wpdb->get_results( $wpdb->prepare( "SELECT r.*, u.display_name FROM {$wpdb->prefix}vv_vendor_reviews r LEFT JOIN {$wpdb->prefix}users u ON r.customer_id=u.ID WHERE r.vendor_id=%d ORDER BY r.created_at DESC LIMIT 50", $uid ) ); $avg = $reviews ? array_sum( array_column( (array) $reviews, 'rating' ) ) / count( $reviews ) : 0; ob_start(); ?>
Avg Rating
Total Reviews
! empty($r->vendor_response) ) ); ?>
Replied

My Reviews

No reviews yet.
display_name, 0, 1 ) ); ?>
display_name ); ?>
rating ); ?>
created_at ) ) ); ?>

review ); ?>

vendor_response ) : ?>
Your reply: vendor_response ); ?>