=== WYSIWYG Character Limit for ACF ===
Contributors: codeandcore  
Tags: acf, wysiwyg, character limit, tinymce, validation
Requires at least: 5.0  
Tested up to: 6.9  
Requires PHP: 7.4  
Stable tag: 4.1.2  
License: GPLv2 or later  
License URI: https://www.gnu.org/licenses/gpl-2.0.html  

ACF WYSIWYG Character Limit adds max-character controls to ACF editors, improving content quality, and editorial standards across WordPress.
== Description ==

**WYSIWYG Character Limit for ACF** is a powerful, feature-rich WordPress plugin that enables you to set **maximum character limits** for Advanced Custom Fields (ACF) WYSIWYG editor fields. Perfect for maintaining content quality, SEO optimization, and editorial consistency across your WordPress site.

= ✨ Key Features =

**Character Limiting & Counting:**

* **Global Character Limit** - Set a site-wide default limit for all WYSIWYG fields
* **Per-Field Limits** - Override global settings with custom limits for individual fields
* **Real-Time Counter** - Live character count updates as you type
* **Smart HTML Exclusion** - Counts only visible text, ignoring all HTML tags and formatting
* **Space Counting Options** - Choose whether to include or exclude spaces from the count

**Visual Feedback & Validation:**

* **Color-Coded Counter** - Visual indicators showing normal, warning, and error states
* **Customizable Colors** - Set your own colors for counter, warning, and error states
* **Warning Messages** - Configurable messages when approaching the limit
* **Error Messages** - Custom error messages when limit is exceeded
* **Counter Position** - Place counter above or below the editor
* **Server-Side Validation** - Prevents saving content that exceeds limits

**Editor Compatibility:**

* **TinyMCE Support** - Works seamlessly in Visual editor mode
* **Text Mode Support** - Full functionality in HTML/Text editor mode
* **Mode Switching** - Maintains accurate count when switching between Visual and Text modes
* **ACF Extended Compatible** - Full support for ACF Extended features

**Advanced Field Support:**

* **Flexible Content** - Works inside Flexible Content layouts
* **Repeater Fields** - Full support for Repeater fields
* **Group Fields** - Compatible with ACF Group fields
* **Clone Fields** - Works with ACF Clone fields
* **Dynamic Fields** - Handles dynamically loaded fields

**Performance & Optimization:**

* **Lightweight Code** - Minimal impact on page load times
* **Efficient Counting** - Optimized algorithm for large content
* **Smart Initialization** - Multiple triggers ensure counters work with dynamic content
* **No jQuery Conflicts** - Clean, conflict-free JavaScript

**User Experience:**

* **Intuitive Settings Page** - Clean, modern admin interface with full customization
* **Deactivation Feedback** - Collect valuable feedback when users deactivate the plugin
* **Accessibility Friendly** - WCAG compliant with keyboard navigation
* **Multisite Ready** - Works perfectly on WordPress multisite networks
* **Multilingual Compatible** - Works with WPML, Polylang, and other translation plugins
* **Developer Friendly** - Well-documented, clean code with hooks and filters

**How it works:**  

* The plugin automatically adds a character counter below every ACF WYSIWYG field.
* The counter updates live as you type, whether you are in Visual or Text mode.
* HTML tags are ignored in the count, so only the text that will be visible on the front-end is counted.
* If you exceed the limit, the counter turns red and saving is prevented until you reduce the character count.
* Works with dynamic fields, repeaters, flexible content, and ACF Extended.

**Why use this plugin?**  

* Maintain content standards for SEO, news, or editorial sites  
* Prevent editors from exceeding allowed content length  
* Ensure uniformity in banners, meta descriptions, and structured content  
* Save time on manual content checks  
* Improve user experience for your content team

= Privacy & Data Collection =

**Your Privacy Matters**

This plugin respects your privacy and operates with full transparency:

* **No Automatic Data Collection** - The plugin does not collect or transmit any data without your explicit consent
* **Opt-In Telemetry** - You can optionally enable anonymous usage tracking from Settings > ACF WYSIWYG Limit to help improve the plugin
* **Deactivation Feedback** - When deactivating, you can choose to share feedback to help us improve. This is completely optional
* **Encrypted Transmission** - All data sent (if you opt-in) is encrypted using AES-256-CBC encryption for security
* **No Personal Content** - We never collect your post content, user passwords, or sensitive information
* **What We Collect (Only if you opt-in)**:
  - Plugin version and settings
  - WordPress and PHP versions
  - Theme information
  - Site language and multisite status
  - Anonymous site URL (for duplicate detection only)

**Deactivation Feedback**

When you deactivate the plugin, a feedback modal appears asking for your reason. This helps us improve the plugin:

* **Completely Optional** - You can skip and deactivate immediately
* **Contact Consent** - Check the consent box only if you want us to follow up with support
* **Your Choice** - Your name and email are only sent if you check the consent checkbox
* **Secure** - All feedback is encrypted before transmission

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/wysiwyg-character-limit-for-acf/`  
2. Activate the plugin via the **Plugins** menu in WordPress.  
3. Go to **Settings > ACF WYSIWYG Limit** to configure global settings and opt-in preferences.  
4. To apply per-field limits, edit any ACF **WYSIWYG** field and set a **Character Limit** value.  
5. The character counter will appear automatically below each WYSIWYG field.

== Frequently Asked Questions ==

= Does this work with ACF Pro? =  
Yes, the plugin is fully compatible with **ACF Free & ACF Pro**.  

= Does this work with Flexible Content and Repeater fields? =  
Yes, you can apply character limits inside **Repeater, Flexible Content, and Group fields**.  

= Does the counter count HTML tags? =  
**No.** As of version 2.0.2, the character counter **excludes all HTML tags** and counts only the visible text, in both Visual and Text modes.

= Can I use this for Word Count instead? =  
Currently, the plugin only supports **character count**. A future update may add **word count support**.  

= Is it compatible with ACF Extended and dynamic field loading? =  
Yes, the plugin supports ACF Extended and works with dynamically loaded fields.

= Can I customize the counter style? =  
You can override the `.char-counter` CSS class in your theme or custom CSS.

== Screenshots ==

1. **Global Settings Panel** – Configure global character limits and counter display options.
2. **ACF Field Character Limit Setting** – Set a character limit for individual WYSIWYG fields.
3. **Character Counter – Normal State** – Shows remaining characters within allowed limit.
4. **Character Counter – Approaching Limit** – Displays warning message when nearing the limit.
5. **Character Counter – Limit Exceeded** – Shows error when character count goes over the limit.
6. **Validation Error on Save** – Prevents saving and displays error when strict validation is enabled.

== Changelog ==

= 4.1.2 - 2026-05-06 =
- New: Automatically redirect to settings page after plugin activation for faster onboarding.

= 4.1.1 - 2026-03-18 =
- New: Automatic redirect to settings page after plugin activation for first-time setup
- Enhancement: Improved plugin activation flow and user onboarding experience

= 4.1.0 - 2026-02-05 =
- New: Deactivation feedback popup to collect user insights and improve the plugin
- New: Professional modal UI with WordPress Dashicons for deactivation reasons
- New: Optional contact consent checkbox for user support follow-up
- Enhancement: Encrypted data transmission for deactivation feedback with AES-256-CBC
- Enhancement: Comprehensive system information collection (PHP, WordPress, theme versions)
- UI: Modern, accessible deactivation modal with blur background effect
- UI: Poppins font integration for consistent typography

= 4.0.1 - 2026-01-29 =
- Fix: Fatal error "Call to undefined function" during plugin update tracking.

= 4.0.0 - 2025-12-10 =
- Full PHP/JS/CSS documentation across the codebase and improved code organization.
- Updated for WordPress 6.9 and PHP 8+; improved performance and accessibility.
- Optional, encrypted opt-in telemetry (no personal or post content collected).
- Enhanced uninstall cleanup, validation, and settings UX for developers and editors.
- Added extra admin settings and customization options for editors and developers.

= 3.0.0 - 2025-10-03 =
- Fixed: Character counter now ignores all HTML tags in both Visual and Text modes (counts only visible text)
- Improved documentation and accessibility
- Enhanced compatibility with ACF Extended and dynamic field loading

= 2.0.1 - 2025-05-19 =
- Fixed character counting in nested fields
- Improved performance for large content
- Added support for custom TinyMCE configurations

= 2.0 - 2025-05-19 =
- Added support for WordPress 6.8
- Improved character counting accuracy
- Enhanced validation messages
- Fixed compatibility issues with ACF Pro 6.0+

= 1.0.0 - 2025-04-16 =
- Initial release  
- Global and per-field character limits  
- Live character counter below WYSIWYG editor  
- Works in both TinyMCE and Text Mode  

== Upgrade Notice ==

= 4.1.2 =
Added automatic redirect to settings page on activation for a smoother setup experience.

= 4.1.1 =
Minor update with improved plugin activation flow. Users are now automatically redirected to settings page upon first activation for seamless setup.

= 4.1.0 =
New deactivation feedback system helps us improve the plugin based on your insights. Includes professional modal UI with encrypted data transmission for privacy and security.

= 4.0.1 =
Fixed a fatal error occurring during plugin updates. Recommended for all users.

= 4.0.0 =
**Major Update!** Complete code documentation overhaul with enterprise-level standards. Updated for WordPress 6.9. Enhanced uninstall cleanup. Recommended for all users - especially developers who want to customize or extend the plugin.

= 3.0.0 =
**Important Update!** Character counter now correctly ignores HTML tags and counts only visible text in both editor modes. Highly recommended for all users to ensure accurate character counting.

= 2.0.1 =
Minor update with performance improvements and bug fixes. Includes better support for nested fields and custom TinyMCE configurations.

= 2.0 =
Major update with improved compatibility and features. Now supports WordPress 6.8 and ACF Pro 6.0+. Includes enhanced character counting and better validation messages.

= 1.0.0 =
First release – install and configure your limits under **Settings > ACF WYSIWYG Limit** or per field in ACF.

== License ==

This plugin is released under the **GPL v2 or later**. You are free to modify and distribute it.
