$value ) { if ( ( isset( $value['reviewer-name'] ) && ! empty( $value['reviewer-name'] ) ) && ( isset( $value['product-rating'] ) && ! empty( $value['product-rating'] ) ) ) { $schema['review'][ $key ]['@type'] = 'Review'; $schema['review'][ $key ]['author']['name'] = wp_strip_all_tags( (string) $value['reviewer-name'] ); if ( isset( $value['reviewer-type'] ) && ! empty( $value['reviewer-type'] ) ) { $schema['review'][ $key ]['author']['@type'] = wp_strip_all_tags( (string) $value['reviewer-type'] ); } else { $schema['review'][ $key ]['author']['@type'] = 'Person'; } if ( isset( $value['product-rating'] ) && ! empty( $value['product-rating'] ) ) { $schema['review'][ $key ]['reviewRating']['@type'] = 'Rating'; $schema['review'][ $key ]['reviewRating']['ratingValue'] = wp_strip_all_tags( (string) $value['product-rating'] ); } $schema['review'][ $key ]['reviewBody'] = ! empty( $value['review-body'] ) ? wp_strip_all_tags( (string) $value['review-body'] ) : null; } } } // Fetch woocommerce review. if ( defined( 'WC_VERSION' ) && apply_filters( 'wp_schema_pro_add_woocommerce_review', false ) ) { $comments = get_comments( array( 'number' => 5, 'post_id' => $post['ID'], 'status' => 'approve', 'post_status' => 'publish', 'post_type' => 'product', 'parent' => 0, 'meta_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query array( 'key' => 'rating', 'type' => 'NUMERIC', 'compare' => '>', 'value' => 0, ), ), ) ); if ( $comments ) { foreach ( $comments as $key => $comment ) { $schema['review'][ $key ]['@type'] = 'Review'; $schema['review'][ $key ]['reviewRating']['@type'] = 'Rating'; $schema['review'][ $key ]['reviewRating']['ratingValue'] = get_comment_meta( $comment->comment_ID, 'rating', true ); $schema['review'][ $key ]['author']['@type'] = 'Person'; $schema['review'][ $key ]['author']['name'] = get_comment_author( $comment ); $schema['review'][ $key ]['reviewBody'] = get_comment_text( $comment ); } } } return apply_filters( 'wp_schema_pro_schema_product', $schema, $data, $post ); } } }