Rave Reviewer
Secure moderated WordPress review and testimonial plugin for Elementor and classic WordPress pages.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/iamtoxima/rave-reviewer/archive/refs/heads/main.zipReadme
Rave Reviewer
Rave Reviewer is a secure, moderated WordPress review and testimonial plugin by Toxima. It lets customers submit reviews from the front end, lets administrators add historical reviews, and provides scoped shortcodes that work in Elementor without affecting the rest of the site's styling.
Features
- Front-end review form with moderation before publication
- Google reCAPTCHA v2 Checkbox with server-side verification
- Nonce, honeypot, duplicate protection, and rate limiting
- Private customer email storage
- Administrator-managed rating, product, location, source, verification, and featured status
- Customer photo support through the WordPress Featured Image field
- Responsive grid and dependency-free carousel layouts
- Elementor-compatible shortcodes
- Queued moderation email through WordPress Cron
- WordPress privacy-policy text, personal-data export, and personal-data erasure
- Cache versioning with deterministic invalidation
- Optional full data removal on uninstall
Requirements
- WordPress 6.4 or newer
- PHP 8.0 or newer
- HTTPS is strongly recommended
- A Google reCAPTCHA v2 Checkbox site if reCAPTCHA protection is enabled
Installation
- Download the release ZIP.
- In WordPress, go to Plugins > Add New > Upload Plugin.
- Upload the ZIP and activate Rave Reviewer.
- Open Rave Reviewer > Settings.
- Configure display preferences, the notification address, rate limits, and reCAPTCHA.
- Add the shortcodes to a page or Elementor Shortcode widget.
Shortcodes
Display published reviews:
[rave_reviewer_reviews]
Display the customer submission form:
[rave_reviewer_form]
Example display options:
[rave_reviewer_reviews layout="grid" limit="6" featured_only="yes" show_photo="yes"]
Supported review-display attributes:
| Attribute | Values | Default |
|---|---|---|
layout |
grid, carousel |
Plugin setting |
limit |
1 to 50 |
Plugin setting |
featured_only |
yes, no |
no |
show_heading |
yes, no |
yes |
show_verified |
yes, no |
Plugin setting |
show_location |
yes, no |
Plugin setting |
show_product |
yes, no |
yes |
show_photo |
yes, no |
yes |
The form accepts heading and button_text attributes.
Adding past-client reviews
- Open Rave Reviewer > Add Review.
- Enter the customer display name as the title.
- Enter the review in the editor.
- Set the rating, optional product and location, and choose Imported past review as the source.
- Only mark the review as verified if you have evidence it came from that customer.
- Publish when ready.
Public customers create Pending reviews. Only an administrator with manage_options can edit or publish them.
reCAPTCHA
Create a reCAPTCHA v2 Checkbox key pair in the Google reCAPTCHA admin console. Add every production hostname that serves the review form. Enter the site key, secret key, and expected hostname in Rave Reviewer > Settings.
For stronger secret management, place keys in wp-config.php:
define('RAVE_REVIEWER_RECAPTCHA_SITE_KEY', 'your-site-key');
define('RAVE_REVIEWER_RECAPTCHA_SECRET_KEY', 'your-secret-key');
Constants override values saved in WordPress. Do not commit real keys to GitHub.
Security model
- All public fields are length-limited, sanitized on input, and escaped on output.
- Form submissions require a nonce and include a timing signal for abuse logging.
- A hidden honeypot rejects simple bots.
- reCAPTCHA tokens are verified with Google's server API and the returned hostname is checked.
- Rate-limit identifiers are HMAC fingerprints; raw IP addresses are not stored by the plugin.
- Customer emails are stored as private post metadata and are never rendered publicly.
- Reviews remain pending until an administrator publishes them.
- Moderation notifications are scheduled asynchronously through WordPress Cron.
- Known failures map to safe, specific messages without exposing stack traces or secrets.
Caching
Published review ID lists are cached for 10 minutes. The cache key contains a generation number. Publishing, editing, deleting, anonymizing, or changing display settings increments that generation, so old entries become unreachable immediately and expire naturally.
Privacy and retention
Rave Reviewer registers suggested text under Settings > Privacy and integrates with WordPress personal-data export and erasure tools.
Erasure removes the customer name, private email, and location. Published review text is retained in anonymized form so that approved public content and moderation history remain coherent. Site owners should document their own legal basis and retention period.
By default, uninstalling the plugin keeps reviews and settings. Enable Permanently delete all reviews and settings when the plugin is deleted only if that is your intended policy.
Development
The public CSS uses only .rave-reviewer-* selectors and the JavaScript has no framework dependency. The plugin does not require Composer or npm.
Before packaging a release:
Get-ChildItem -Recurse -Filter *.php | ForEach-Object { php -l $_.FullName }
Save PHP files as UTF-8 without a byte-order mark. A BOM before <?php can emit output early and break WordPress cookies, redirects, downloads, and REST responses.
Contributing
See CONTRIBUTING.md. Security issues should follow SECURITY.md.
License
Rave Reviewer is licensed under the GNU General Public License v2.0 or later. See LICENSE.