Reviews Plugin — SynaptikCMS

Standalone customer-reviews module: admin-managed review list (author, star rating, text, optional avatar), displayed on the front end as a carousel or grid via shortcode. No external dependency, no API key, no database — everything is a flat JSON file, same as CMS core content.


Installing

  1. Upload the plugin. From Admin → Tools → Extensions, use the Install a plugin upload form and select the plugin's .zip file. The ZIP must contain a plugin.json manifest at its root with "synaptik_plugin": true.
    • The plugin is extracted to /plugins/reviews/ but not activated automatically — this is intentional, mirroring how theme uploads work.
    • If a folder named plugins/reviews/ already exists, the upload is refused. Delete the existing plugin first if you're reinstalling.
  2. Activate it. Still on the Extensions page, click Activate on the Reviews card. This adds a Reviews entry to the main admin sidebar.
  3. Add some reviews. Open the Reviews sidebar entry and use the "Add a review" form: customer name, star rating, review text, an optional date and avatar image, and a status (Published / Draft).
  4. Display them. In the content editor, insert one of the shortcodes below anywhere in an article, page, or project. The widget renders automatically at that spot on the public-facing page.

Shortcodes

[reviews_carousel]
[reviews_grid]
[reviews_carousel limit="6" min_rating="4"]
[reviews_grid limit="3"]
AttributeValuesDefaultDescription
limitintegerplugin setting (default 10)Max number of reviews shown
min_rating1–51Only show reviews at or above this star rating

Only published reviews are ever rendered — a review saved with status "Draft" is visible in the admin list but never appears on the front end, so a testimonial can be prepared and reviewed before going live.

If no published review matches the given min_rating, the shortcode renders nothing (no empty widget shell) rather than an empty carousel.


Using it day to day

Admin side — Reviews sidebar entry:

  • Add / edit — a single form handles both; author, rating (1–5), review text, date, optional avatar upload, and status.
  • Reorder — drag rows in the review list to change their display order; the new order is saved automatically and used by both shortcodes.
  • Delete — removes the review and its avatar file, if any.
  • Settings — set the default layout (carousel or grid) and default number of reviews shown, used whenever a shortcode omits limit/style.

Avatar uploads are optional. If skipped, the widget shows a colored initial-letter placeholder instead. Accepted formats: JPEG, PNG, WebP, GIF — max 2 MB, validated by actual file content (not just the file extension) before being stored.


Maintenance notes

  • Only published reviews count toward the average rating shown in the admin stats panel rv_get_average_rating()) — draft reviews are excluded, same as they're excluded from the front-end display.
  • Avatar cleanup is automatic. Deleting a review, or replacing its avatar with a new upload, removes the old image file from assets/uploads/ — the directory does not accumulate orphaned files over normal use.
  • Reordering is a single JSON write. Drag-and-drop in the admin list posts the full ordered ID list once per drag (reorder_reviews in admin/actions.php), not one request per row moved.
  • Adding a language: copy lang/en.jsonlang/{locale}.json and lang/admin/en.jsonlang/admin/{locale}.json, translate the values. The plugin automatically follows the core's active_language (front) and admin_language (admin) settings — no extra configuration needed.
  • Distribution. This plugin is excluded from the core CMS's public release export (export-release.sh excludes /plugins/ and plugins.json) — it ships and updates independently of core releases.