This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

HMS Testimonials


HMS Testimonials is a testimonial and review plugin for your WordPress website. This plugin was built to cover a bunch of different use cases. Therefore it does not contain any styling to make it “look pretty”. You are free to add any CSS to make your testimonials look good to your themes style.css. If you have a unique need and HMS Testimonials doesn’t fit, open a support thread and request what you need. While not all requests are added, many are.

A few of our unique features include:

  • Create your own templates using drag and drop allowing you to display testimonials in different ways through your site.
  • Custom fields! You can now add additional fields to your testimonials.
  • You can now add an image to your testimonial. This allows you show a picture of the person who submitted the testimonial.
  • Create groups to show different sets of testimonials on different pages. Testimonials can be added to multiple groups to reduce duplicates.

HMS Testimonials offers you three shortcodes and two widgets. The first shortcode allows you to show all of your testimonials, a group of testimonials or just a single testimonial. The second shortcode allows you to show all or a group of testimonials that rotate through one at a time. Our third shortcode will display a form on a page or post to allow your visitors to submit testimonials.

If your theme uses sidebars you can use the widgets we provide The first widget compliments the first shortcode by listing all, a group or just a single testimonial. Our second widget rotates through the selected testimonials one at a time. After a few seconds it will fade out the old testimonial and fade in the new one.


  • All Testimonials
  • Add a Testimonial
  • Sidebar demonstration


  1. Upload the hms-testimonials folder to your /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to Testimonals in the sidebar and add them in.


Can I have visitors submit testimonials to me?

Yes, add the [hms_testimonials_form] shortcode to a page or a post.

Can I show only 1 testimonial?

Yes, both the shortcode and the widget allow you to select and id to show. You can find the id in the first column of your testimonials.

Can I set how fast the testimonials rotate?

Yes, there is a setting in the HMS Testimonial Rotator widget that lets you specify the number of seconds. On the shortcode add a seconds attribute. Ex. [hms_testimonials_rotating seconds=10]

Can I have multiple rotating sidebar widgets or shortcodes

Yes, you can have multiple rotating widgets or shortcodes. Each one has it’s own identifier so they don’t conflict with each other.

How many groups can I create?

There is no limit.

Can a testimonial be in more than one group?

Yes, you can assign a testimonial to as many groups as you want

How do you assign a testimonial to a group?

Go to Testimonials. Then click the ID of the testimonial. On the right hand side you will see “Groups”. This is where you select what group(s) you want your testimonial assigned to.


Read all 43 reviews

Contributors & Developers

“HMS Testimonials” is open source software. The following people have contributed to this plugin.


Translate “HMS Testimonials” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Changed a few outdated links


  • Fix adding testimonials on group view page
  • Fix sorting testimonials on group view page
  • Added the ability to edit a group name


  • Don’t use the image width/height settings in the admin


  • Fixed an issue where the add group button was being hidden


  • Fixed an issue where the display order for groups was not saving properly.


  • Added a setting that will strip http:// and https:// from the part of the URL a visitor would see.


  • Fixed illegal offset message


  • Allow YouTube/Vimeo iframes in HTMLPurifier.


  • Doesn’t overwrite the footer aggregate review microdata


  • Use create_function instead of a closure to support PHP 5.2+


  • Tested up to 4.0.
  • Use new Akismet calls if available
  • Added the ability to turn off spam notifications if Akismet marks a testimonial as spam.
  • Added the ability to set the location of the aggregate reviews for use with shortcodes


  • Added IDs to the fields on the add/edit testimonial screen inside the WordPress dashboard.


  • Added section to the documentation on overriding the rating display.
  • Added an option to stop outputting br tags


  • Fix bug where pause / play buttons weren’t working on hover


  • Pause the rotating testimonials when you hover over them


  • Fixed a bug where testimonials were not showing up in for a group in the admin
  • Fixed a bug where groups were not saving for some users
  • Added a group attribute to the form shortcode so you can have submissions be automatically added to a form


  • Fixed a bug where review markup was being output on js.php causing the javascript to break.


  • Added setting to automatically approve testimonials
  • Added a link to the admin email to automatically approve testimonials without logging in
  • Use Akisment static methods. Akismet 3 deprecated using their functions.
  • Added an option to allow logged (non moderator users) to add their testimonial to a group
  • Adjusted add/edit testimonial to allow non moderator users to add their testimonial to one or more groups if enabled


  • Only show fields that are marked “Show on form”
  • Added aggregate review rating
  • Fixed spelling on email


  • Added the ability to use the Captcha plugin with HMS Testimonials
  • Added a setting to pick the image size to use when displaying a testimonial author image.
  • Added 5 star rating system
  • Increased microdata usage on the template
  • Fixed undefined index on template page
  • Added the testimonial author as an alt tag to the testimonial image


  • Fixed a few undefined index warnings
  • Added ID attributes to the testimonials


  • Added list of groups a testimonial is in on the main testimonials page
  • Added visual editor to author fields
  • Added edit links to testimonials on shortcode if you are a moderator
  • Added the following filters to alter the shortcode pagination links: hms_testimonials_pagination_link, hms_testimonials_pagination_next, hms_testimonials_pagination_previous, and hms_testimonials_pagination_current


  • Added option to not append the testimonial ID to the default read more link.


  • testimonial_id={id} is now appended to the read more links.
  • hms_testimonials shortcode will now accept a testimonial_id $_GET parameter to override what testimonials are shown. This allows the read more link to go to a dynamic single testimonial page.


  • You can not set the unit measurement of pixels or percent for the height and width of images.
  • Added filters to override the custom field text


  • Added new setting to redirect the hms_testimonials_form shortcode to another page on submission.
  • Added redirect_url attribute to hms_testimonials_form to override the setting.
  • Added the hms_testimonials_submitted_success filter to override the successful submission message
  • Added filters to override error messages of custom fields. Filters follow the hms_testimonials_required_cf_{field id} format.
  • Added filter to override invalid email on custom fields. Filter follows the hms_testimonials_email_cf_{field id} format.
  • Added filter names to the Custom Fields page.


  • Fixed a bug where the tables were not being created in a multi site.


  • I forgot to add rotator.js to svn so it didn’t get uploaded


  • Rotating javascript has been movied to it’s own file instead of inline
  • Added the following filters: hms_testimonials_sc_error_token, hms_testimonials_sc_error_name, hms_testimonials_sc_error_testimonial, hms_testimonials_sc_error_image, hms_testimonials_sc_error_website, hms_testimonials_sc_error_captcha


  • I broke reCAPTCHA so I fixed it.


  • Fixed a notice in the group area
  • Fixed reCaptcha method name collisions
  • Adjust the number of minutes for flood control on the form shortcode
  • Added image upload to form
  • Added setting to turn image upload on or off. Defaults to off for security reasons
  • Added setting to turn website field on or off.


  • Fixed a bug in the testimonial form shortcode where a blank space was added to the name field.


  • Fixed a bug where the session may be started after output thus throwing an error.


  • Added multiple anti spam measures for the shortcode form.
  • Fixed a PHP notice in the templates screen.
  • Moved jquery-ui to only show on testimonial pages


  • The js.php script now allows you to load rotating testimonials.


  • Fixed a PHP notice dealing with custom fields
  • Added random to the order attributes. It works the same as rand
  • Changed email custom field on the form shortcode to be a type of email instead of text
  • Added review microdata to testimonials. See:


  • hms_testimonials_form shortcode now escapes POST data.
  • Fixed a bug where input did not have slashes stripped when an error occured.


  • Fixed some notces that are displayed when debugging is turned on.
  • When submitting a URL through the form shortcode it will auto append http:// to the website if it doesn’t exist.


  • Fixed a bug in multi-site mode where templates keep getting created on every page load


  • Fixed a bug when generating a random string in the widgets and shortcodes


  • Fixed a bug with pagination and determining the current page
  • Fixed some notices / deperaction messages in HTMLPurifier


  • Fixed a bug where email custom fields were required despite the “Required” checkbox not being checked.


  • Fixed a bug with HTMLPurifier not working on some hosts.


  • Moved the rotating javascript to the footer


  • Added Read More settings
  • Added a new field to testimonials to specify your own read more link on an indvidual basis.


  • Template output now filters more data


  • Fixed several CSRF (Cross Site Request Forgery) vulnerabilities. Thank you RogueCoder for finding them and disclosing them responsibly.
  • Fixed several XSS (Cross Site Scripting) vulnerabilities. Thank you RogueCoder for finding them and disclosing them responsibly.
  • Added HTMLPurifier library


  • Fixed a bug where content was being sent before a redirect causing a blank page.


  • Added the ability to toggle between using a div or a blockquote for the testimonial text


  • Added word_limit to shortcodes and widgets. This limits the number of words shown on a testimonial.
  • Added char_limit to shortcodes and widgets. This limits the number of characters shown on a testimonial.
  • Allow loading testimonials through javascript. You MUST enable this option in the advanced settings area before using it.
  • Updated documentation


  • Fixed a bug with WordPress MultiSite not showing testimonials in wp-admin
  • Fixed a few bugs with SQL queries regarding multisite functionality
  • Added new option to hms_testimonials_show_rotating and rotating widget to not automatically start rotating. For the shortcode add autostart=”false” For the widget there is a checkbox.
  • Added new option to hms_testimonials_show_rotating and rotating widget to change the position of the Prev, Pause/Play and Next links. Options are top, bottom, or both. It defaults to bottom. For the shortcode use link_position=”top” or any of the 3 options. The widget now has a drop down to select the position.


  • Added filters to the templates. hms_testimonials_system_id, hms_testimonials_system_testimonial, hms_testimonials_system_source, hms_testimonials_system_date, hms_testimonials_system_url, hms_testimonials_system_image, and all custom fields fall under hms_testimonials_cf_ with their name lower cased.

An example to limit a testimonial to 100 characters:

function testimonial_go($text) {
return substr($text, 0, 100);
add_filter(‘hms_testimonials_system_testimonial’, ‘testimonial_go’);

If you change the code to the following, you can get access to the testimonial array:

function testimonial_go($text, $testimonial) {
return substr($text, 0, 100);
add_filter(‘hms_testimonials_system_testimonial’, ‘testimonial_go’, 10, 2);


  • Fixed a bug with pagination when not using permalinks. This also fixes an issue if you had any other query arguments in your url as well.


  • Fixed a few issues noticed by Brit Albritton on the forums.


  • Added filters to change the text for the public testimonial form fields. hms_testimonials_sc_name, hms_testimonials_sc_website, hms_testimonials_sc_testimonial and hms_testimonials_sc_submit


  • Now Catches an exception thrown on the testimonial date field when using a date format that DateTime doesn’t like. A friendlier message is now shown.
  • Added the jQuery UI datepicker to the testimonial date.


  • Fixed a bug with templates not saving correctly


  • Create custom fields
  • Create your own templates for displaying your testimonials
  • Add an image from the gallery to your testimonial
  • Added the ability to change the collation of the testimonial fields. Useful for languages that require UTF-8
  • Some settings moved to an advanced settings page
  • Miscellaneous bug fixes
  • Set the date format


  • Miscellaneous bug fixes
  • Added “order” and “direction” attributes to the [hms_testimonials] shortcode. Valid items for “order” are name,testimonial,url,testimonial_date, and display_order. Valid directions are ASC and DESC
  • Added row classes to the form.


  • Added the TinyMCE editor to the testimonial textarea
  • Added a testimonial date field.
  • Added more templates to account for the date field
  • Added new options for the [hms_testimonials] shortcode to limit the results and paginate them. These are limit, start, next, prev, location.


  • Fixed bug where new line breaks were not being added in some instances.


  • Added a template attribute to the shortcodes and widgets to specify the order of the testimonial, author and url.
  • Updated documentation to reflect the new template attribute.


  • Added Prev,Pause(Play), and Next links to the rotating shortcode and widget.
  • Updated the shortcode widget form to set the text for the links.
  • Updated the documentation page to reflect these new options.


  • Added a new shortcode ( [hms_testimonials_form] ) to allow website visitors to submit testimonials.
  • Added reCAPTCHA settings (enable/disable, public/private keys) to the settings for the form
  • Added a setting to allow or disallow a moderator to access the settings pages
  • New testimonials have a display order set to put them at the end of the list


  • Each testimonial now sits in a div container. Each part also sits in a container. testimonial, author and url classes have been added to each part.
  • Added settings to show the URLs of testimonials as an active link and whether or not to add a nofollow relationship on them.


  • Moved admin pages to a class. This helped decrease the amount of queries to the database and removed global functions
  • Added a rotating testimonial shortcode. Use with [hms_testimonials_rotating group=1 seconds=6]
  • Added custom created roles to the drop downs
  • Added a moderator role setting
  • Added the ability to limit the number of testimonials a can create.


  • Added the ability to allow users of lesser roles add / edit their own testimonials. The administrator email address will receive a notification for all new and updated testimonials.


  • Fixed the slashes being added in front of quotes and apostrophes in your testimonials.


  • Plugin is released to WordPress