{"id":326583,"date":"2026-07-05T19:20:11","date_gmt":"2026-07-05T19:20:11","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/riaco-reviews\/"},"modified":"2026-07-05T19:19:42","modified_gmt":"2026-07-05T19:19:42","slug":"riaco-reviews","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/riaco-reviews\/","author":8872771,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.2","stable_tag":"1.2.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"RIACO Reviews \u2013 Customer Reviews & Testimonials","header_author":"Roberto Iacono","header_description":"Collect, manage, and display customer reviews with Grid and Masonry layouts via blocks and shortcodes.","assets_banners_color":"98b4ec","last_updated":"2026-07-05 19:19:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/riaco-reviews\/","header_author_uri":"https:\/\/riacoplugins.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":15,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.2":{"tag":"1.2.2","author":"prototipo88","date":"2026-07-05 19:19:42"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3597047,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3597047,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3597047,"resolution":"1544x500","location":"assets","locale":"","width":1343,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3597047,"resolution":"772x250","location":"assets","locale":"","width":672,"height":250}},"assets_blueprints":{},"all_blocks":{"riaco-reviews\/reviews-block":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"riaco-reviews\/reviews-block","version":"1.2.2","title":"RIACO Reviews","category":"widgets","icon":"star-filled","description":"Display a grid or masonry layout of customer reviews.","example":{},"supports":{"html":false,"align":["wide","full"]},"attributes":{"count":{"type":"integer","default":6},"layout":{"type":"string","default":"grid"},"cardStyle":{"type":"string","default":"default"},"headingLevel":{"type":"integer","default":3},"showAuthorName":{"type":"boolean","default":true},"showAvatar":{"type":"boolean","default":true},"showDate":{"type":"boolean","default":true},"showRating":{"type":"boolean","default":true},"showSource":{"type":"boolean","default":true},"showProduct":{"type":"boolean","default":true},"showTitle":{"type":"boolean","default":true},"showShadow":{"type":"boolean","default":true},"minWidth":{"type":"integer","default":300},"orderby":{"type":"string","default":"date"},"order":{"type":"string","default":"DESC"},"cardBg":{"type":"string","default":""},"cardTextColor":{"type":"string","default":""},"cardBorderColor":{"type":"string","default":""},"starColor":{"type":"string","default":""},"fontSize":{"type":"string","default":""},"lineHeight":{"type":"string","default":""},"productBg":{"type":"string","default":""},"productTextColor":{"type":"string","default":""},"productFilter":{"type":"string","default":""}},"textdomain":"riaco-reviews","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css"}},"tagged_versions":["1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3597047,"resolution":"1","location":"assets","locale":"","width":1341,"height":411},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3597047,"resolution":"2","location":"assets","locale":"","width":1172,"height":1108},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3597047,"resolution":"3","location":"assets","locale":"","width":1334,"height":540},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3597047,"resolution":"4","location":"assets","locale":"","width":1158,"height":573},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3597047,"resolution":"5","location":"assets","locale":"","width":821,"height":577},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3597047,"resolution":"6","location":"assets","locale":"","width":730,"height":527},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3597047,"resolution":"7","location":"assets","locale":"","width":836,"height":585},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3597047,"resolution":"8","location":"assets","locale":"","width":302,"height":791}},"screenshots":{"1":"<strong>Review list admin screen<\/strong> \u2014 Custom admin list table showing Author, Rating (stars), Source logo, Product, and Review Date columns for quick management.","2":"<strong>Add \/ Edit review screen<\/strong> \u2014 Post editor with the Review Details meta box (author name, avatar upload, star rating, review date, source URL) and Source \/ Product dropdowns in the sidebar.","3":"<strong>Sources admin screen<\/strong> \u2014 Taxonomy screen for managing review sources with logo upload and preview.","4":"<strong>Block editor \u2014 Inspector sidebar<\/strong> \u2014 The Reviews block selected, showing the Inspector panels: Display Settings, Field Visibility, Sort Order, Card Colours, and Typography.","5":"<strong>Frontend \u2014 Grid layout, Default card style<\/strong> \u2014 Review cards in an auto-fill grid with title, star rating, product badge, review text, avatar, and source logo.","6":"<strong>Frontend \u2014 Grid layout, Modern card style<\/strong> \u2014 Grid column layout with compact author + rating header row and source link in the footer.","7":"<strong>Frontend \u2014 Grid layout, Minimal card style<\/strong> \u2014 Minimal cards with large title, text-coloured stars, no avatars, and author name linked to the source URL.","8":"<strong>Frontend \u2014 Mobile view<\/strong> \u2014 Single-column layout on a narrow screen, demonstrating the responsive auto-fill column behaviour."}},"plugin_section":[262246],"plugin_tags":[25588,270243,1519,2293,1518],"plugin_category":[53],"plugin_contributors":[238641],"plugin_business_model":[],"class_list":["post-326583","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-customer-reviews","plugin_tags-review-block","plugin_tags-reviews","plugin_tags-star-rating","plugin_tags-testimonials","plugin_category-ratings-and-reviews","plugin_contributors-prototipo88","plugin_committers-prototipo88"],"banners":{"banner":"https:\/\/ps.w.org\/riaco-reviews\/assets\/banner-772x250.png?rev=3597047","banner_2x":"https:\/\/ps.w.org\/riaco-reviews\/assets\/banner-1544x500.png?rev=3597047","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/riaco-reviews\/assets\/icon-128x128.png?rev=3597047","icon_2x":"https:\/\/ps.w.org\/riaco-reviews\/assets\/icon-256x256.png?rev=3597047","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-1.png?rev=3597047","caption":"<strong>Review list admin screen<\/strong> \u2014 Custom admin list table showing Author, Rating (stars), Source logo, Product, and Review Date columns for quick management."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-2.png?rev=3597047","caption":"<strong>Add \/ Edit review screen<\/strong> \u2014 Post editor with the Review Details meta box (author name, avatar upload, star rating, review date, source URL) and Source \/ Product dropdowns in the sidebar."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-3.png?rev=3597047","caption":"<strong>Sources admin screen<\/strong> \u2014 Taxonomy screen for managing review sources with logo upload and preview."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-4.png?rev=3597047","caption":"<strong>Block editor \u2014 Inspector sidebar<\/strong> \u2014 The Reviews block selected, showing the Inspector panels: Display Settings, Field Visibility, Sort Order, Card Colours, and Typography."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-5.png?rev=3597047","caption":"<strong>Frontend \u2014 Grid layout, Default card style<\/strong> \u2014 Review cards in an auto-fill grid with title, star rating, product badge, review text, avatar, and source logo."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-6.png?rev=3597047","caption":"<strong>Frontend \u2014 Grid layout, Modern card style<\/strong> \u2014 Grid column layout with compact author + rating header row and source link in the footer."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-7.png?rev=3597047","caption":"<strong>Frontend \u2014 Grid layout, Minimal card style<\/strong> \u2014 Minimal cards with large title, text-coloured stars, no avatars, and author name linked to the source URL."},{"src":"https:\/\/ps.w.org\/riaco-reviews\/assets\/screenshot-8.png?rev=3597047","caption":"<strong>Frontend \u2014 Mobile view<\/strong> \u2014 Single-column layout on a narrow screen, demonstrating the responsive auto-fill column behaviour."}],"raw_content":"<!--section=description-->\n<p><strong>RIACO Reviews<\/strong> lets you manually collect, manage, and display customer reviews and testimonials anywhere on your WordPress site \u2014 no page builder required. Add the Reviews block in the Gutenberg editor and get a live preview instantly, or drop in the <code>[riaco_reviews]<\/code> shortcode on any page or widget area.<\/p>\n\n<p>Every review is a native WordPress post with its own star rating, author, avatar, review date, source platform, and product. Display options, layout, card style, and colours are all configurable directly from the block inspector panel \u2014 no CSS editing required.<\/p>\n\n<h4>Why RIACO Reviews?<\/h4>\n\n<ul>\n<li><strong>Works with any theme<\/strong> \u2014 lightweight, BEM-structured CSS, no opinionated framework dependencies.<\/li>\n<li><strong>Three card styles<\/strong> \u2014 Default, Modern, and Minimal \u2014 each designed to suit a different aesthetic without installing extra plugins.<\/li>\n<li><strong>Two responsive layouts<\/strong> \u2014 Grid and Masonry \u2014 that adapt to any container width automatically. No fixed breakpoints.<\/li>\n<li><strong>Colour control<\/strong> \u2014 customise card background, text, borders, star colour, product badge colours, font size, and line height directly from the block editor.<\/li>\n<li><strong>Built for WordPress<\/strong> \u2014 uses a custom post type, standard taxonomies, native media uploader, and WordPress hooks throughout.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<p><strong>Display &amp; Layout<\/strong><\/p>\n\n<ul>\n<li><strong>Gutenberg block<\/strong> with server-side rendering and a live preview via <code>ServerSideRender<\/code>. All settings in the Inspector sidebar.<\/li>\n<li><strong>Shortcode<\/strong> <code>[riaco_reviews]<\/code> \u2014 use it in any page, post, widget area, or theme template.<\/li>\n<li><strong>Grid layout<\/strong> \u2014 CSS <code>auto-fill<\/code> grid; column count adapts automatically to available width.<\/li>\n<li><strong>Masonry layout<\/strong> \u2014 CSS columns with <code>break-inside: avoid<\/code>; same adaptive behaviour.<\/li>\n<li><strong>Three card styles<\/strong> \u2014 Default (header with title and source logo), Modern (compact header with avatar, author, and inline star rating), Minimal (large title, no avatar, source name as text).<\/li>\n<li><strong>Configurable minimum card width<\/strong> \u2014 sets the <code>--riaco-card-min-width<\/code> CSS custom property that drives both layouts.<\/li>\n<\/ul>\n\n<p><strong>Per-Review Data<\/strong><\/p>\n\n<ul>\n<li>Review headline (post title)<\/li>\n<li>Review body (post content)<\/li>\n<li>Author name and avatar (falls back to a generated initials badge when no photo is provided)<\/li>\n<li>Star rating \u2014 1 to 5 stars<\/li>\n<li>Review date (separate from the publish date \u2014 enter the date the customer left the review)<\/li>\n<li>Source platform \u2014 assign a platform like \"Google\", \"Trustpilot\", or \"WordPress.org\" with its logo<\/li>\n<li>Source URL \u2014 link to the original review on the external platform<\/li>\n<li>Product \/ subject \u2014 label each review with what it refers to; set a URL and schema.org type per product for structured data<\/li>\n<\/ul>\n\n<p><strong>Visibility Toggles<\/strong><\/p>\n\n<p>Show or hide each element independently:<\/p>\n\n<ul>\n<li>Review title<\/li>\n<li>Author name<\/li>\n<li>Author avatar \/ initials<\/li>\n<li>Star rating<\/li>\n<li>Review date<\/li>\n<li>Source platform logo<\/li>\n<li>Product badge<\/li>\n<li>Card drop shadow<\/li>\n<\/ul>\n\n<p><strong>Filtering<\/strong><\/p>\n\n<ul>\n<li>Filter displayed reviews by product \u2014 show only reviews assigned to a specific product or subject.<\/li>\n<li>Block editor: choose a product from the \"Filter by Product\" dropdown in the Display Settings panel.<\/li>\n<li>Shortcode: pass <code>product=\"my-product-slug\"<\/code> (comma-separated slugs for multiple products).<\/li>\n<\/ul>\n\n<p><strong>Sorting<\/strong><\/p>\n\n<ul>\n<li>By date (newest or oldest first)<\/li>\n<li>By star rating (highest or lowest first)<\/li>\n<li>Random (shuffle on every page load)<\/li>\n<\/ul>\n\n<p><strong>Colour &amp; Typography Overrides<\/strong><\/p>\n\n<p>Override directly from the block editor or shortcode attributes:<\/p>\n\n<ul>\n<li>Card background colour<\/li>\n<li>Card text colour<\/li>\n<li>Card border colour<\/li>\n<li>Star colour<\/li>\n<li>Product badge background and text colour<\/li>\n<li>Font size (rem)<\/li>\n<li>Line height<\/li>\n<\/ul>\n\n<p><strong>Admin<\/strong><\/p>\n\n<ul>\n<li>Dedicated <strong>Reviews<\/strong> menu in the WordPress admin<\/li>\n<li>Custom admin list table with columns for author, rating, source logo, product, and review date<\/li>\n<li>Media-uploader integration for author avatars and source logos<\/li>\n<\/ul>\n\n<p><strong>JSON-LD Structured Data<\/strong><\/p>\n\n<ul>\n<li>Automatically outputs schema.org <code>Review<\/code> structured data in a <code>&lt;script type=\"application\/ld+json\"&gt;<\/code> tag in the page footer \u2014 no setup required.<\/li>\n<li>Each review card produces one <code>Review<\/code> object with <code>reviewBody<\/code>, <code>reviewRating<\/code>, <code>author<\/code>, <code>datePublished<\/code>, <code>url<\/code>, and <code>itemReviewed<\/code>.<\/li>\n<li><code>itemReviewed<\/code> is driven by the product assigned to the review: set a URL and a schema.org type (Product, SoftwareApplication, LocalBusiness, Organization, Book, Movie, Course, Event, or the generic Thing) on each product in <strong>Reviews \u2192 Products<\/strong>.<\/li>\n<li>Reviews without a product fall back to the review headline as <code>itemReviewed.name<\/code> with type <code>Thing<\/code>.<\/li>\n<li>Multiple reviews on the same page (from one or more blocks\/shortcodes) are combined into a single <code>@graph<\/code> array \u2014 one <code>&lt;script&gt;<\/code> tag regardless of how many shortcodes are on the page.<\/li>\n<li>Use the <code>riaco_reviews_json_ld_data<\/code> filter to modify or suppress the structured data for individual reviews.<\/li>\n<\/ul>\n\n<p><strong>Developer-Friendly<\/strong><\/p>\n\n<ul>\n<li><code>riaco_reviews_atts<\/code> \u2014 filter display attributes before rendering<\/li>\n<li><code>riaco_reviews_query_args<\/code> \u2014 modify the <code>WP_Query<\/code> before it runs (add tax queries, <code>post__in<\/code>, etc.)<\/li>\n<li><code>riaco_reviews_card_meta<\/code> \u2014 add or modify per-review metadata before the card template receives it<\/li>\n<li><code>riaco_reviews_card_template_path<\/code> \u2014 swap in a custom card template per style or per post<\/li>\n<li><code>riaco_reviews_before_card<\/code> \/ <code>riaco_reviews_after_card<\/code> \u2014 inject markup around individual cards<\/li>\n<li><code>riaco_reviews_before_loop<\/code> \/ <code>riaco_reviews_after_loop<\/code> \u2014 inject markup around the whole reviews wrapper<\/li>\n<li><code>riaco_reviews_no_reviews_html<\/code> \u2014 replace the empty-state message<\/li>\n<li><code>riaco_reviews_layouts<\/code> \/ <code>riaco_reviews_card_styles<\/code> \/ <code>riaco_reviews_orderby_options<\/code> \u2014 register custom values for layout, card style, and sort order<\/li>\n<li><code>riaco_reviews_init<\/code> \/ <code>riaco_reviews_loaded<\/code> \u2014 plugin lifecycle actions for third-party extensions<\/li>\n<li><code>riaco_reviews_block_render_atts<\/code> \u2014 map additional Gutenberg block attributes into the render pipeline<\/li>\n<li><code>riaco_reviews_json_ld_data<\/code> \u2014 modify or suppress the structured data object for a single review before it is collected<\/li>\n<\/ul>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>SaaS companies<\/strong> \u2014 showcase user testimonials on landing pages with star ratings and platform logos (G2, Capterra, Product Hunt).<\/li>\n<li><strong>Freelancers and agencies<\/strong> \u2014 display client testimonials with a clean Minimal card style.<\/li>\n<li><strong>eCommerce stores<\/strong> \u2014 highlight product reviews filtered by product name in a Grid layout.<\/li>\n<li><strong>WordPress plugin and theme authors<\/strong> \u2014 show WordPress.org reviews with source logo and link to the original listing.<\/li>\n<li><strong>Local businesses<\/strong> \u2014 display Google or Yelp reviews with the platform logo and a link to the source.<\/li>\n<li><strong>Course creators and coaches<\/strong> \u2014 collect student testimonials and display them in a Masonry layout with avatars.<\/li>\n<\/ul>\n\n<h4>Shortcode Reference<\/h4>\n\n<p>Basic usage:<\/p>\n\n<pre><code>[riaco_reviews]\n<\/code><\/pre>\n\n<p>All parameters:<\/p>\n\n<pre><code>[riaco_reviews count=\"6\" layout=\"grid\" card_style=\"default\" orderby=\"date\" order=\"DESC\" product=\"\" show_title=\"1\" show_author_name=\"1\" show_avatar=\"1\" show_date=\"1\" show_rating=\"1\" show_source=\"1\" show_product=\"1\" show_shadow=\"1\" min_width=\"300\"]\n<\/code><\/pre>\n\n<p>Colour and typography:<\/p>\n\n<pre><code>[riaco_reviews card_bg=\"#ffffff\" card_text_color=\"#444444\" card_border_color=\"#e4e4e7\" star_color=\"#f59e0b\" product_bg=\"#f4f4f5\" product_text_color=\"#18181b\" font_size=\"0.9375\" line_height=\"1.7\"]\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>riaco-reviews<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the <strong>Plugins &gt; Add New<\/strong> screen in WordPress.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Reviews &gt; Add New<\/strong> to create your first review \u2014 enter the headline as the post title, the review body as the post content, and fill in the Review Details meta box (author, rating, date, source URL).<\/li>\n<li>Go to <strong>Reviews &gt; Sources<\/strong> to add platform sources (Google, Trustpilot, etc.) and upload their logos.<\/li>\n<li>Go to <strong>Reviews &gt; Products<\/strong> to add product or subject entries.<\/li>\n<li>In the block editor, search for <strong>Reviews<\/strong> and insert the block. Configure display options in the Inspector sidebar.<\/li>\n<li>Alternatively, add <code>[riaco_reviews]<\/code> to any post, page, or widget area.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20free%3F\"><h3>Is this plugin free?<\/h3><\/dt>\n<dd><p>Yes, RIACO Reviews is completely free and open source under the GPLv2 or later licence.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20gutenberg%20%28block%29%20editor%3F\"><h3>Does this work with the Gutenberg (block) editor?<\/h3><\/dt>\n<dd><p>Yes. The plugin registers a native Gutenberg block (<code>riaco-reviews\/reviews-block<\/code>) with a live server-side preview in the editor. All display settings are in the Inspector sidebar \u2014 no shortcode needed when using the block editor.<\/p><\/dd>\n<dt id=\"can%20i%20also%20use%20a%20shortcode%20instead%20of%20the%20block%3F\"><h3>Can I also use a shortcode instead of the block?<\/h3><\/dt>\n<dd><p>Yes. Use <code>[riaco_reviews]<\/code> in any post, page, widget area, or PHP template. All the same options available in the block are available as shortcode attributes.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20new%20review%3F\"><h3>How do I add a new review?<\/h3><\/dt>\n<dd><p>Go to <strong>Reviews &gt; Add New<\/strong> in the WordPress admin. Enter the review headline as the post title and the review text as the main content. Use the <strong>Review Details<\/strong> meta box to set the author name, avatar, star rating, review date, and a link to the original source. Assign a Source (platform) and a Product from the sidebar dropdowns.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20platform%20logo%20%28google%2C%20trustpilot%2C%20etc.%29%3F\"><h3>How do I add a platform logo (Google, Trustpilot, etc.)?<\/h3><\/dt>\n<dd><p>Go to <strong>Reviews &gt; Sources<\/strong> and add a new source. Upload a logo image using the <strong>Logo \/ Image<\/strong> field \u2014 the WordPress media uploader is integrated. SVG files are supported for source logos. The logo will appear in the card header (Default and Modern styles) or as text in the Minimal style.<\/p><\/dd>\n<dt id=\"what%20card%20styles%20are%20available%3F\"><h3>What card styles are available?<\/h3><\/dt>\n<dd><p>Three styles are available:<\/p>\n\n<ul>\n<li><strong>Default<\/strong> \u2014 white card with a drop shadow; header row shows the review title and source logo side by side.<\/li>\n<li><strong>Modern<\/strong> \u2014 compact header combines the author avatar, name, date, and a compact star rating in one row; the footer splits the product badge and source link.<\/li>\n<li><strong>Minimal<\/strong> \u2014 large bold title, no avatar or source logo, stars use the text colour, author name links to the source URL.<\/li>\n<\/ul><\/dd>\n<dt id=\"can%20i%20customise%20the%20colours%20to%20match%20my%20brand%3F\"><h3>Can I customise the colours to match my brand?<\/h3><\/dt>\n<dd><p>Yes. From the block editor Inspector sidebar, open the <strong>Card Colours<\/strong> or <strong>Typography<\/strong> panel to set card background, text, border, star, and product badge colours, as well as font size and line height. The same options are available as shortcode attributes. All values are injected as CSS custom properties on the wrapper element so they scope to that specific block instance.<\/p><\/dd>\n<dt id=\"does%20the%20layout%20respond%20to%20different%20screen%20sizes%3F\"><h3>Does the layout respond to different screen sizes?<\/h3><\/dt>\n<dd><p>Yes. Both the Grid and Masonry layouts use CSS <code>auto-fill<\/code> \/ <code>column-width<\/code> with a configurable minimum card width (default 300 px). Columns are added or removed automatically based on the available container width \u2014 no fixed breakpoints are used.<\/p><\/dd>\n<dt id=\"can%20i%20show%20or%20hide%20specific%20fields%20%28avatar%2C%20date%2C%20rating%2C%20etc.%29%3F\"><h3>Can I show or hide specific fields (avatar, date, rating, etc.)?<\/h3><\/dt>\n<dd><p>Yes. Every field has an individual show\/hide toggle \u2014 available both in the block editor Inspector sidebar and as shortcode attributes (<code>show_avatar<\/code>, <code>show_date<\/code>, <code>show_rating<\/code>, etc.). For example, to hide the review date: <code>[riaco_reviews show_date=\"0\"]<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20sort%20reviews%20by%20star%20rating%3F\"><h3>Can I sort reviews by star rating?<\/h3><\/dt>\n<dd><p>Yes. Set <code>orderby=\"rating\"<\/code> in the shortcode or choose <strong>By rating<\/strong> in the block editor Sort Order panel. You can also sort by date (newest or oldest first) or random.<\/p><\/dd>\n<dt id=\"how%20do%20i%20assign%20reviews%20to%20a%20product%3F\"><h3>How do I assign reviews to a product?<\/h3><\/dt>\n<dd><p>Go to <strong>Reviews &gt; Products<\/strong> and create a product entry for each product or subject. When editing a review, select the appropriate product from the <strong>Product<\/strong> dropdown in the sidebar. The product name appears as a pill badge on the card.<\/p><\/dd>\n<dt id=\"can%20i%20show%20only%20reviews%20for%20a%20specific%20product%3F\"><h3>Can I show only reviews for a specific product?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>product<\/code> attribute in the shortcode \u2014 pass the product slug (the URL-friendly version of the product name):<\/p>\n\n<pre><code>[riaco_reviews product=\"my-plugin\"]\n<\/code><\/pre>\n\n<p>For multiple products (show reviews matching any of them), pass a comma-separated list:<\/p>\n\n<pre><code>[riaco_reviews product=\"plugin-one,plugin-two\"]\n<\/code><\/pre>\n\n<p>In the block editor, open the <strong>Display Settings<\/strong> panel and choose a product from the <strong>Filter by Product<\/strong> dropdown. Selecting \"\u2014 All Products \u2014\" removes the filter.<\/p><\/dd>\n<dt id=\"can%20i%20filter%20the%20reviews%20query%20to%20show%20only%20certain%20reviews%3F\"><h3>Can I filter the reviews query to show only certain reviews?<\/h3><\/dt>\n<dd><p>Yes, using the <code>riaco_reviews_query_args<\/code> filter. This gives you access to the full <code>WP_Query<\/code> args array before the query runs \u2014 add taxonomy queries, <code>post__in<\/code>, meta queries, or any other <code>WP_Query<\/code> parameter. Example:<\/p>\n\n<pre><code>add_filter( 'riaco_reviews_query_args', function( $args, $atts ) {\n    $args['tax_query'] = [ [ 'taxonomy' =&gt; 'riaco_review_product', 'field' =&gt; 'slug', 'terms' =&gt; 'my-product' ] ];\n    return $args;\n}, 10, 2 );\n<\/code><\/pre><\/dd>\n<dt id=\"does%20this%20plugin%20output%20json-ld%20structured%20data%20for%20rich%20results%3F\"><h3>Does this plugin output JSON-LD structured data for rich results?<\/h3><\/dt>\n<dd><p>Yes. The plugin automatically outputs schema.org <code>Review<\/code> structured data in the page footer for every review rendered by a block or shortcode. No configuration is required \u2014 the data is picked up by Google and other search engines automatically.<\/p>\n\n<p>To get the most out of rich results, go to <strong>Reviews \u2192 Products<\/strong>, edit each product, and set:<\/p>\n\n<ul>\n<li><strong>Product \/ Subject URL<\/strong> \u2014 the canonical URL of the thing being reviewed (e.g. your plugin's WordPress.org listing page).<\/li>\n<li><strong>Schema.org Type<\/strong> \u2014 the type of thing being reviewed. Use <code>Product<\/code> for physical or digital products, <code>SoftwareApplication<\/code> for apps and plugins, <code>LocalBusiness<\/code> for shops and services, etc. Leave it as <code>Thing<\/code> if unsure.<\/li>\n<\/ul>\n\n<p>Reviews that share the same product but have different star ratings each produce a separate <code>Review<\/code> object \u2014 this is expected and valid. You can validate the structured data with <a href=\"https:\/\/search.google.com\/test\/rich-results\">Google's Rich Results Test<\/a>.<\/p>\n\n<p>To suppress or modify the structured data for a specific review, use the <code>riaco_reviews_json_ld_data<\/code> filter (return <code>false<\/code> to suppress).<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20custom%20card%20template%3F\"><h3>Can I use a custom card template?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>riaco_reviews_card_template_path<\/code> filter to return the path to your own PHP template file. The filter receives the default path, the card style slug, the post ID, and the meta array, so you can switch templates per style or per review.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20add%20anything%20to%20my%20database%20on%20activation%3F\"><h3>Does this plugin add anything to my database on activation?<\/h3><\/dt>\n<dd><p>No. Activation flushes the rewrite rules so the custom post type and taxonomies register correctly; deactivation flushes them again so the CPT slug is removed cleanly. No custom database tables are created. All review data is stored as standard WordPress post meta.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>The plugin loads its CSS only on pages where the block or shortcode is present (<code>wp_enqueue_block_style<\/code> and on-demand shortcode enqueueing). The block uses server-side rendering, so no JavaScript is loaded on the frontend. All images use the <code>loading=\"lazy\"<\/code> attribute.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. All user-facing strings are wrapped in WordPress i18n functions and the text domain is <code>riaco-reviews<\/code>. A <code>.pot<\/code> file is included in the <code>languages\/<\/code> directory.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Security: added <code>sanitize_text_field()<\/code> around nonce values read from <code>$_POST<\/code> in Admin, ReviewSource, and ReviewProduct \u2014 resolves PHPCS <code>InputNotSanitized<\/code> warnings.<\/li>\n<li>Fix: renamed the global <code>$plugin<\/code> variable to <code>$riaco_reviews_plugin<\/code> to avoid naming conflicts with other plugins.<\/li>\n<li>Fix: corrected <code>strtotime()<\/code> truthiness guard in all three card-style templates from <code>if ($ts)<\/code> to <code>if (false !== $ts)<\/code> \u2014 reviews dated 1970-01-01 now display their date correctly on the frontend.<\/li>\n<li>Fix: replaced <code>number_format()<\/code> with <code>number_format_i18n()<\/code> for the compact star-rating value in the Modern card style.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Bug fixes and minor improvements.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><strong>Taxonomy rename:<\/strong> <code>riaco_review_tag<\/code> renamed to <code>riaco_review_product<\/code>; the admin menu now shows <strong>Reviews \u2192 Products<\/strong> instead of Tags.<\/li>\n<li><strong>Shortcode attribute rename:<\/strong> <code>tag<\/code> \u2192 <code>product<\/code>, <code>show_tag<\/code> \u2192 <code>show_product<\/code>, <code>tag_bg<\/code> \u2192 <code>product_bg<\/code>, <code>tag_text_color<\/code> \u2192 <code>product_text_color<\/code>. Old <code>tag=<\/code> attribute still accepted for backward compatibility.<\/li>\n<li><strong>Block attribute rename:<\/strong> <code>tagFilter<\/code> \u2192 <code>productFilter<\/code>, <code>showTag<\/code> \u2192 <code>showProduct<\/code>, <code>tagBg<\/code> \u2192 <code>productBg<\/code>, <code>tagTextColor<\/code> \u2192 <code>productTextColor<\/code>. Old saved blocks continue to render correctly via a compatibility shim.<\/li>\n<li><strong>CSS rename:<\/strong> <code>.riaco-reviews__card-tag<\/code> \u2192 <code>.riaco-reviews__card-product<\/code>; <code>--riaco-tag-*<\/code> custom properties \u2192 <code>--riaco-product-*<\/code>.<\/li>\n<li><strong>DB migration:<\/strong> on first load after upgrade, the plugin automatically renames the taxonomy slug and migrates <code>_riaco_tag_url<\/code> \/ <code>_riaco_tag_type<\/code> term meta keys \u2014 no manual action needed.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li><strong>JSON-LD structured data:<\/strong> the plugin now outputs schema.org <code>Review<\/code> structured data automatically in the page footer for every rendered review, enabling Google rich results with no configuration.<\/li>\n<li><strong>Tag metadata:<\/strong> two new fields on the <strong>Reviews \u2192 Tags<\/strong> (now <strong>Products<\/strong>) edit screen \u2014 \"Product \/ Subject URL\" and \"Schema.org Type\" \u2014 let you specify what each entry refers to so <code>itemReviewed<\/code> in the structured data is as accurate as possible.<\/li>\n<li><code>riaco_reviews_json_ld_data<\/code> filter: modify or suppress the JSON-LD object for individual reviews before output.<\/li>\n<li>Multiple blocks\/shortcodes on the same page produce a single <code>&lt;script&gt;<\/code> tag with a <code>@graph<\/code> array rather than one script per shortcode.<\/li>\n<li><strong>Accessibility:<\/strong> added <code>:focus-visible<\/code> outlines to all interactive links; improved colour contrast on muted text (date, author handle, source name) to meet WCAG 2.1 AA.<\/li>\n<li><strong>Dark mode:<\/strong> CSS custom properties now have sensible dark-mode defaults via <code>prefers-color-scheme: dark<\/code> (overrideable via block\/shortcode colour controls).<\/li>\n<li><strong>Mobile:<\/strong> reduced card padding at &lt;480 px; modern card footer now wraps to avoid overflow on narrow screens.<\/li>\n<li><strong>Card hover:<\/strong> subtle lift effect with <code>prefers-reduced-motion<\/code> guard.<\/li>\n<li><strong>Empty state:<\/strong> improved padding and alignment for the \"No reviews found\" message.<\/li>\n<li><strong>Block editor:<\/strong> added Wide \/ Full alignment support; new \"Title Heading Level\" control (H2\u2013H6); help text on the Min Card Width slider; \"Reset all settings to defaults\" button.<\/li>\n<li><strong>Heading level:<\/strong> <code>heading_level<\/code> attribute\/parameter (default <code>3<\/code>) lets you control the HTML heading tag for review titles across block and shortcode.<\/li>\n<li><strong>Dashboard widget:<\/strong> new \"Reviews Overview\" widget on the WP admin dashboard showing published review count and average rating.<\/li>\n<li><strong>Shortcode reference:<\/strong> contextual help tab on the Reviews list screen listing all <code>[riaco_reviews]<\/code> parameters and defaults.<\/li>\n<li><strong>i18n:<\/strong> admin media-uploader strings (\"Select Avatar\", \"Use this image\", \"Select Logo\") are now translatable via PHP localisation.<\/li>\n<li><strong>Bug fix:<\/strong> <code>strtotime()<\/code> truthiness check corrected to <code>false !== $ts<\/code> to handle edge-case epoch dates.<\/li>\n<li><strong>Security:<\/strong> source logo save capability tightened from <code>manage_categories<\/code> to <code>manage_options<\/code>.<\/li>\n<li><strong>Tooltip:<\/strong> <code>title<\/code> attribute added to truncated author names and product badges so full text is accessible on hover.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added filter-by-tag support: <code>tag<\/code> shortcode attribute and <code>tagFilter<\/code> block attribute (renamed to <code>product<\/code> \/ <code>productFilter<\/code> in v1.2.0) let you show only reviews assigned to a specific tag.<\/li>\n<li>Block editor: new \"Filter by Tag\" dropdown (now \"Filter by Product\") in the Display Settings panel, populated from existing tags without requiring REST API access.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix performance bugs<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Custom post type <code>riaco_review<\/code> with dedicated admin list table (Author, Rating, Source, Product, Review Date columns).<\/li>\n<li>Gutenberg block with server-side rendering and live editor preview.<\/li>\n<li>Shortcode <code>[riaco_reviews]<\/code> with full attribute support.<\/li>\n<li>Grid and Masonry responsive layouts.<\/li>\n<li>Default, Modern, and Minimal card styles.<\/li>\n<li>Review Sources taxonomy with media-uploader logo field (SVG supported).<\/li>\n<li>Review Products taxonomy with pill badge display.<\/li>\n<li>Per-review fields: author name, avatar (with initials fallback), star rating (1\u20135), review date, source URL.<\/li>\n<li>Show\/hide toggles for all card elements.<\/li>\n<li>Sort by date, rating, or random.<\/li>\n<li>Colour and typography overrides via CSS custom properties.<\/li>\n<li>Configurable minimum card width.<\/li>\n<li>Developer hooks: filters for attributes, query args, card meta, card template path, empty state HTML, allowed layouts\/styles\/orderby; actions for card and loop wrapper injection, plugin lifecycle.<\/li>\n<\/ul>","raw_excerpt":"Display beautiful customer reviews and testimonials in Grid or Masonry layouts with a Gutenberg block, shortcode, and colour control.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/326583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=326583"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/prototipo88"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=326583"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=326583"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=326583"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=326583"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=326583"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=326583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}