=== 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
