About this plugin
Client Testimonial turns client feedback into a proper WordPress content type: write a testimonial once, then show it anywhere with a shortcode, the block editor, an Elementor widget or a classic widget area.
It includes six ready-made templates, five responsive layouts, video testimonials, a front-end review form, a floating average-rating badge, JSON-LD review schema and full control over what appears in every card.
Testimonial content
- Client name, designation, company and company logo.
- Reviewer photo (featured image) with an automatic initials avatar fallback.
- Star rating from 1 to 5.
- Video testimonial from YouTube, Vimeo or a self-hosted MP4/WebM file.
- Reviewer website and LinkedIn / Facebook / X / Instagram links.
- Private reviewer e-mail for your records only; it is never shown publicly.
- Date of experience.
- Optional link to a WooCommerce product.
- Featured flag for spotlight sections.
- Per-testimonial name and designation colours.
- Categories and tags for grouping.
- Manual ordering with the page-attributes field.
Layouts and display
- Slider, carousel, grid, masonry and list layouts.
- Responsive columns for grid and masonry.
- Responsive slides per view for desktop, tablet and mobile.
- Autoplay, transition speed, infinite loop, pause on hover, arrows and pagination dots.
- Configurable gap between slides.
- Excerpt length with a translated “Read more” link.
- Show or hide the rating, avatar, quote icon, company, company logo, social links, website, date and linked product.
- Light, dark and plain card themes.
- Accent, star, quote, card background and text colours; card radius, font size, avatar size and gap.
- Optional per-view custom CSS.
- Section headings with a configurable heading tag.
- Assets load only on pages that contain a testimonial, with an rtd_needs_assets filter for custom template integrations.
Floating average rating badge
Show the average rating and total review count as a fixed badge on any page.
- Enable or disable it under Testimonials → Settings → Display.
- Position it in the bottom-left, bottom-right, top-left or top-right corner.
- Set the distance from the bottom/top and left/right edges in pixels.
- Show it on the entire site, the front page only, or all inner pages.
- Choose a light or dark badge style.
- Show or hide the review count.
- Only published testimonials with a rating are counted.
- The same values are available in a normal inline layout with [rtd_testimonial_average].
Templates
Six templates are created in the database on activation and after updates that add new defaults. Each template stores its own layout, columns, limit, filters, heading, theme and display toggles, so you can reuse a complete design with one shortcode.
- Homepage Slider — three-up carousel, six testimonials, video testimonials excluded, light theme, heading “What our clients say”, autoplay, arrows, dots, 3/2/1 slides across desktop/tablet/mobile.
- Trust Grid — three-column grid, six testimonials, video testimonials excluded, light theme, heading “Trusted by teams like yours”, ratings and company logos.
- Video Stories — dark three-up carousel, six testimonials, video testimonials only, heading “Hear it from our clients”, autoplay, arrows, dots, 3/2/1 slides.
- Compact List — stacked list, four testimonials, 30-word excerpts with a “Read more” link, quote icon hidden, light theme, heading “Recent feedback”.
- Masonry Wall — three-column masonry, nine testimonials, plain card style, heading “Client stories”.
- Featured Spotlight — two-up carousel, four featured testimonials rated four stars or more, light theme, heading “Our favourite reviews”.
Manage templates under Testimonials → Templates:
- Preview the layout with the built-in thumbnail.
- Edit every setting without writing code.
- Duplicate a template to create a variation.
- Copy its shortcode with one click.
- Use the template in the Gutenberg block or either Elementor widget.
- Updates only add templates the site has never received; edited and deleted templates are never overwritten.
Front-end review form
Collect new testimonials without giving visitors access to the WordPress admin.
- Shortcode: [rtd_testimonial_form].
- Fields: name, e-mail (private), designation, company, website, star rating, testimonial, video URL, photo, category and consent.
- AJAX submission with inline success and error messages.
- Photo upload accepts JPG, PNG or WebP up to 3 MB.
- Submissions are saved as Pending for your approval.
- The site admin receives an e-mail notification for each submission.
- Spam protection: honeypot field, minimum completion time and a per-IP rate limit.
- Privacy policy link when one is configured.
- Optional attributes: heading, button, category, show_company, show_video, show_photo and class.
Gutenberg block and Elementor widgets
- Gutenberg block: Testimonials.
- Elementor widgets: Testimonials (Wbee) and Video Testimonials (Wbee), both in the RTD Testimonials widget category.
- A template dropdown lets you reuse any saved template.
- “Custom settings” gives you direct layout, limit, category, ordering, heading and display controls.
- The Elementor Style tab includes accent, star, card background, text and name colours, card radius and typography.
- The Elementor card background control applies directly to the card, so it works with light, dark and plain templates.
- The block editor preview uses the same front-end styles as the published page.
Structured data and SEO
When Output Review schema is enabled, each rendered view adds JSON-LD Review and AggregateRating markup. Set the reviewed organisation name and URL under Testimonials → Settings → Advanced. The schema includes the reviewer name, review body, rating, date and the average rating across the rendered testimonials.
Security and privacy
- Shortcode attributes and settings are sanitised and validated.
- All front-end output is escaped.
- Settings changes use the WordPress Settings API and capability checks.
- The front-end form uses a nonce, honeypot, minimum completion time and a per-IP rate limit.
- Uploads are limited by MIME type and file size.
- Reviewer e-mail addresses are stored privately and never rendered on the front end.
- Rate limiting uses a salted IP hash instead of storing the raw IP address.
- Uninstalling keeps your testimonials and settings unless you enable Delete all data on uninstall.
Performance
- Front-end CSS and JavaScript are only enqueued on pages that contain a testimonial, the block or an Elementor testimonial widget.
- Swiper is loaded only for slider and carousel layouts.
- No jQuery dependency on the front end.
- Template queries use WP_Query; admin queries use WordPress APIs and prepared SQL where needed.
- Images are lazy-loaded and use the WordPress attachment sizes.
Compatibility
- WordPress 6.3 or newer.
- PHP 7.0 or newer.
- Works with classic themes, block themes and Elementor.
- WooCommerce is optional; when active, a testimonial can link to a published product.
- The testimonial post type, taxonomy and meta keys are unchanged from earlier versions.
Backward compatibility
The primary shortcodes are [rtd_testimonial], [rtd_testimonial_average], [rtd_testimonial_count] and [rtd_testimonial_form]. The woodebee_* names also work as aliases. Existing meta keys and the testimonial post type are unchanged, so upgrading does not require a data migration.
Where you can use it
- Shortcode: [rtd_testimonial].
- Template: [rtd_testimonial template="trust-grid"].
- Inline average rating: [rtd_testimonial_average].
- Review count: [rtd_testimonial_count].
- Submission form: [rtd_testimonial_form].
- Gutenberg block: Testimonials.
- Elementor widgets: Testimonials (Wbee) and Video Testimonials (Wbee).
- Any classic widget area via the shortcode or block.
- A PHP template: <?php echo do_shortcode( '[rtd_testimonial]' );?>.
Shortcode examples
[rtd_testimonial] uses the saved settings.
[rtd_testimonial template="trust-grid"] uses a saved template.
[rtd_testimonial layout="grid" columns="3" limit="6"] shows a three-column grid of six testimonials.
[rtd_testimonial layout="carousel" slides="3" category="clients" orderby="rand"] shows a three-up carousel of random testimonials from the "clients" category.
[rtd_testimonial rating_min="4" featured="only"] shows only featured testimonials rated four stars or more.
[rtd_testimonial video="only"] shows only testimonials that have a video.
[rtd_testimonial_form] shows the front-end review submission form.
[rtd_testimonial_form heading="Share your experience" category="clients"] shows the form with a custom heading and a preselected category.
All shortcode attributes
template, `template_id`, `layout`, `columns`, `limit`, `orderby`, `order`, `category`, `tag`, `ids`, `rating_min`, `featured`, `video`, `heading`, `heading_tag`, `excerpt`, `theme`, `show_rating`, `show_avatar`, `show_quote`, `show_company`, `show_logo`, `show_socials`, `show_website`, `show_date`, `show_product`, `autoplay`, `delay`, `speed`, `loop`, `pause`, `arrows`, `dots`, `slides`, `slides_tablet`, `slides_mobile`, `gap`, `schema` and `class`.
Explicit shortcode attributes always win over the template, so [rtd_testimonial template="trust-grid" limit="3"] shows three testimonials using the rest of the Trust Grid settings.
Credits
- Font Awesome Free 7.2.0 by Fonticons, Inc. — https://fontawesome.com/ — icons CC BY 4.0, fonts SIL OFL 1.1, code MIT. Bundled at assets/vendor/fontawesome/.
- Swiper 11.2.10 by Vladimir Kharlampidi — https://swiperjs.com/ — MIT. Bundled at assets/vendor/swiper/.