=== Bizetools Testimonials Manager === Contributors: bizetools Tags: testimonials, reviews, schema, structured data, json-ld Requires at least: 5.8 Tested up to: 6.9 Stable tag: 1.4.0 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Professional testimonials and reviews manager with Google-compliant structured data, beautiful layouts, and easy-to-use shortcodes. == Description == Testimonials Manager provides a comprehensive solution for managing and displaying client testimonials and reviews on your WordPress site with proper SEO-compliant structured data. = Free Features = * **Custom Post Type** - Dedicated testimonial post type with full WordPress integration * **Structured Data** - Google-compliant JSON-LD schema markup for reviews * **Flexible Shortcodes** - Display testimonials anywhere with customizable filters * **Admin Interface** - Intuitive management with custom columns and filters * **CSV Import/Export** - Bulk import/export testimonials for easy migration * **Settings Page** - Configure business details and display options * **Two Layouts** - List and Grid layouts included * **SEO Compliant** - Follows Google's review markup guidelines * **Performance** - Built-in caching with WordPress transients * **Accessibility** - WCAG 2.1 AA compliant with proper ARIA labels * **Categories & Tags** - Organize testimonials by practice area or topic * **Rating System** - 1-5 star ratings with visual display * **Source Attribution** - Link back to original reviews (Google, Yelp, etc.) * **Owner Responses** - Add responses to reviews = Pro Features (Upgrade) = Upgrade to **Testimonials Manager Pro** for advanced features: * ⭐ **Auto-Insert Reviews by Category** - Automatically insert category-matched reviews into posts (e.g., show "Workers Compensation" reviews on workers comp posts) * ⭐ **Google Reviews Import** - Automatically import reviews from Google Business Profile with API integration * ⭐ **5 Premium Layouts** - Cards (Trustindex style), Modern Grid (Yelp style), Slider/Carousel, Compact, Masonry * ⭐ **Featured Review Shortcode** - Highlight your best reviews with `[bztm_featured_review]` * ⭐ **Review Stats Badge** - Display overall rating and count with `[bztm_review_stats]` * ⭐ **Scheduled Updates** - Automatic review updates from Google (daily/weekly/monthly) * ⭐ **Smart Positioning** - Insert reviews after intro, before conclusion, or custom positions * ⭐ **Priority Support** - Get help when you need it [Upgrade to Pro →](https://bizetools.com/testimonials-manager-pro) = Shortcodes = **Display Multiple Reviews (List):** `[bztm_reviews count="8" min_rating="4"]` **Display as Grid:** `[bztm_reviews count="8" min_rating="4" layout="grid"]` **Display Single Review:** `[bztm_testimonial id="123"]` **Filter by Category:** `[bztm_reviews cat="workers-compensation" count="6"]` **Pro Shortcodes (Requires Upgrade):** `[bztm_featured_review id="123"]` - Highlight a single review `[bztm_review_stats]` - Display overall rating badge `[bztm_reviews layout="slider"]` - Carousel layout `[bztm_reviews layout="cards"]` - Horizontal scrolling cards = Available Attributes = * `count` - Number of reviews to display (default: 8) * `min_rating` - Minimum rating to show (1-5, default: 1) * `layout` - Display layout: "list" or "grid" (default: list) - Pro: "slider", "cards", "modern-grid", "compact", "masonry" * `cat` - Filter by category slug * `tag` - Filter by tag slug * `source` - Filter by source (e.g., "Google Reviews") * `orderby` - Sort by: "date", "rating", or "title" (default: date) * `order` - Sort order: "DESC" or "ASC" (default: DESC) * `show_owner_response` - Show owner responses: "true" or "false" (default: false) * `aggregate` - Show aggregate rating: "true" or "false" (default: true) = SEO & Compliance = This plugin follows Google's structured data guidelines: * **Self-Serving Review Policy** - Reviews about your own business on your own domain will not show star snippets in search results (Google policy) * **Truthful Attribution** - Always displays source and links to original reviews * **Parity Rule** - Structured data matches exactly what's visible on the page * **Proper Schema** - Uses LocalBusiness, Organization, or LegalService schema types = Developer Friendly = Includes filters and actions for customization: * `bztm_reviews_query_args` - Modify WP_Query arguments * `bztm_reviews_business_schema` - Alter business JSON-LD * `bztm_reviews_review_schema` - Alter per-review JSON-LD * `bztm_reviews_html_card` - Override HTML card output * `bztm_reviews_can_emit_schema` - Gate output of JSON-LD == Installation == 1. Upload the plugin files to `/wp-content/plugins/testimonials-manager/` 2. Activate the plugin through the 'Plugins' screen in WordPress 3. Go to Testimonials → Settings to configure business details 4. Add testimonials via Testimonials → Add New 5. Use shortcodes to display testimonials on your pages == Frequently Asked Questions == = Will this show star ratings in Google search results? = For reviews about your own business on your own domain, Google will not show star snippets due to their self-serving review policy. However, the structured data is still valuable for semantic understanding and potential future use. = Can I import reviews from Google Business Profile? = Yes! You can export reviews from your Google Business Profile dashboard and import them via CSV in the free version. For automatic import directly from Google's API, upgrade to [Testimonials Manager Pro](https://bizetools.com/testimonials-manager-pro). = How do I get the Google Maps CID URL? = Visit your Google Business Profile, click "Share" and copy the link. It will look like: `https://maps.google.com/?cid=XXXXXXXXXXXX` = Can I customize the appearance? = Yes! The plugin includes minimal CSS that can be overridden in your theme. You can also use the provided filters to completely customize the HTML output. = Does this work with page builders? = Yes! The shortcodes work with all major page builders including Elementor, Beaver Builder, Divi, and the WordPress Block Editor. == Screenshots == 1. Testimonials list with custom columns and filters 2. Add/Edit testimonial screen with meta boxes 3. Settings page with business details 4. CSV import interface 5. Frontend display - List layout 6. Frontend display - Grid layout == Changelog == = 1.4.0 = * Fixed JSON-LD escaping vulnerability by adding JSON_HEX_TAG and JSON_HEX_AMP flags * Removed all Pro-only feature code to comply with WordPress.org trialware guidelines * Removed locked/disabled feature UI elements (preview import button, Google API section, Auto-Insert section) * Improved output escaping with wp_kses_post() for star ratings * Removed slider assets (Pro-only feature) * Code cleanup and WordPress.org compliance improvements = 1.3.0 = * Updated all function, class, and CSS prefixes to use unique `bztm_` / `bztm-` prefix for WordPress.org compliance * Improved security with enhanced nonce verification and capability checks * Updated shortcode names to `[bztm_reviews]`, `[bztm_testimonial]` * Improved code organization and WordPress Coding Standards compliance * Enhanced accessibility features = 1.0.0 = * Initial release * Custom post type for testimonials * Shortcodes for displaying reviews * JSON-LD structured data output * Admin interface with filters and bulk actions * CSV import/export functionality * Settings page for configuration * Responsive CSS styling * Caching with transients * Translation ready == Upgrade Notice == = 1.0.0 = Initial release of Testimonials Manager. == Developer Notes == = File Structure = * `testimonials-manager.php` - Main plugin file * `inc/class-cpt.php` - Custom post type registration * `inc/class-meta.php` - Meta fields handling * `inc/class-admin-columns.php` - Admin list table customization * `inc/class-settings.php` - Settings page * `inc/class-schema.php` - JSON-LD schema builders * `inc/class-shortcode.php` - Shortcode handlers * `inc/class-import.php` - CSV import functionality * `inc/helpers.php` - Helper functions * `assets/testimonials.css` - Frontend styles = Coding Standards = This plugin follows WordPress Coding Standards (WPCS) and includes: * Proper sanitization and escaping * Nonce verification for forms * Prepared statements for database queries * Translation-ready strings * Accessibility features * Performance optimization = Support = For support and customization inquiries, contact Mike Potter at Bizetools. Website: https://bizetools.com