A review box with the schema to match
Most review plugins get one of two halves right. Either the box looks good and the structured data is wrong, or the JSON-LD validates and the box looks like a spreadsheet. Review Anything has been on this site since July 2013 because we wanted both in one small plugin, and the 2.0.0 download is a from-scratch rewrite that shares a single renderer between a block and a shortcode.
What the reader sees
The item name and picture, a score ring drawn with a conic gradient, stars derived from the score, a one-line summary, pros and cons in two columns, your verdict, and an optional button to the product with nofollow on it. Stars come with a text alternative (the aria-label reads “Score 8.5 out of 10”), and on a 390 px phone the pros and cons stack with no overflow. Each review can have its own accent colour. There is no frontend JavaScript.
Filling it in
Add the “Review Anything” block and work through the sidebar. The item name defaults to the post title and the reviewer defaults to the post author, so a basic review needs little more than a score. The score scale is 0 to 10, 0 to 5 or 0 to 100, and the stars are worked out from it with half-star precision: 8.5 out of 10 gives four full stars and a half. Pros and cons go one per line. The verdict field allows basic HTML through wp_kses_post.
Classic editor users get the same thing as a shortcode, with pros and cons separated by | and the verdict as the enclosed content:
[review_anything name="Acme Widget" type="Product" score="8.5" pros="Fast|Cheap" cons="Loud" button="Check price" url="https://example.com"]Verdict text here[/review_anything]
Item types
- Product, SoftwareApplication, Book, Movie, VideoGame
- Course, Restaurant, LocalBusiness, Organization
- Thing, for everything else
The structured data
While the box renders, the plugin collects a schema.org Review object and prints it once as JSON-LD in the footer: itemReviewed with type, name, image and URL, reviewRating with ratingValue, bestRating and worstRating, author, publisher, datePublished, reviewBody, and the pros and cons as positiveNotes and negativeNotes item lists. Several reviews on one page each get their own block. Schema can be switched off per review, and the review_anything_schema filter lets you change anything before it is printed.
Whether Google shows stars is Google’s decision. The markup follows the Review vocabulary in their documentation and both test outputs parsed as valid JSON with the right types, but we could not run their rich-result validator from the build environment, so do that yourself on a live post. Also be aware of their rule against self-serving reviews: a review of your own business on your own site is not eligible, no matter how good the markup is.
What changed from 2013
The original kept reviews in their own post type and let visitors leave reviews with an averaged rating. 2.0.0 drops both. A review now lives inside the post it belongs to, as block attributes or a shortcode, and there is no visitor rating form. If you need user reviews with aggregate ratings, this is the wrong plugin. Needs WordPress 6.0 and PHP 7.4; tested on WordPress 7.1.4 with a block theme and PHP 8.3.






