{"id":229527,"date":"2025-04-23T09:57:27","date_gmt":"2025-04-23T09:57:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/acf-wysiwyg-character-limit\/"},"modified":"2026-03-18T12:18:11","modified_gmt":"2026-03-18T12:18:11","slug":"wysiwyg-character-limit-for-acf","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wysiwyg-character-limit-for-acf\/","author":22039652,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.1.1","stable_tag":"4.1.1","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"WYSIWYG Character Limit for ACF","header_author":"Code and Core","header_description":"Adds character limits to ACF WYSIWYG fields with global and per-field settings, real-time counter, and validation.","assets_banners_color":"e7e9ff","last_updated":"2026-03-18 12:18:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/codeandcore.com\/","rating":5,"author_block_rating":0,"active_installs":100,"downloads":1456,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"codeandcore","date":"2025-04-23 09:56:49"},"2.0":{"tag":"2.0","author":"codeandcore","date":"2025-05-19 06:58:22"},"2.0.1":{"tag":"2.0.1","author":"codeandcore","date":"2025-05-19 08:22:04"},"3.0.0":{"tag":"3.0.0","author":"codeandcore","date":"2025-10-03 10:05:19"},"4.0.0":{"tag":"4.0.0","author":"codeandcore","date":"2025-12-10 07:47:02"},"4.0.1":{"tag":"4.0.1","author":"codeandcore","date":"2026-01-29 12:18:50"},"4.1.0":{"tag":"4.1.0","author":"codeandcore","date":"2026-02-05 07:52:07"},"4.1.1":{"tag":"4.1.1","author":"codeandcore","date":"2026-03-18 12:18:11"}},"upgrade_notice":{"4.1.1":"<p>Minor update with improved plugin activation flow. Users are now automatically redirected to settings page upon first activation for seamless setup.<\/p>","4.1.0":"<p>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.<\/p>","4.0.1":"<p>Fixed a fatal error occurring during plugin updates. Recommended for all users.<\/p>","4.0.0":"<p><strong>Major Update!<\/strong> 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.<\/p>","3.0.0":"<p><strong>Important Update!<\/strong> 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.<\/p>","2.0.1":"<p>Minor update with performance improvements and bug fixes. Includes better support for nested fields and custom TinyMCE configurations.<\/p>","2.0":"<p>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.<\/p>","1.0.0":"<p>First release \u2013 install and configure your limits under <strong>Settings &gt; ACF WYSIWYG Limit<\/strong> or per field in ACF.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3464144,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3464144,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3279804,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3279804,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","2.0","2.0.1","3.0.0","4.0.0","4.0.1","4.1.0","4.1.1"],"block_files":[],"assets_screenshots":{"Screenshot-2.png":{"filename":"Screenshot-2.png","revision":3416016,"resolution":"2","location":"assets","locale":""},"Screenshot-3.png":{"filename":"Screenshot-3.png","revision":3416016,"resolution":"3","location":"assets","locale":""},"Screenshot-4.png":{"filename":"Screenshot-4.png","revision":3416016,"resolution":"4","location":"assets","locale":""},"Screenshot-5.png":{"filename":"Screenshot-5.png","revision":3416016,"resolution":"5","location":"assets","locale":""},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3416016,"resolution":"1","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3416016,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"<strong>Global Settings Panel<\/strong> \u2013 Configure global character limits and counter display options.","2":"<strong>ACF Field Character Limit Setting<\/strong> \u2013 Set a character limit for individual WYSIWYG fields.","3":"<strong>Character Counter \u2013 Normal State<\/strong> \u2013 Shows remaining characters within allowed limit.","4":"<strong>Character Counter \u2013 Approaching Limit<\/strong> \u2013 Displays warning message when nearing the limit.","5":"<strong>Character Counter \u2013 Limit Exceeded<\/strong> \u2013 Shows error when character count goes over the limit.","6":"<strong>Validation Error on Save<\/strong> \u2013 Prevents saving and displays error when strict validation is enabled."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2211,27983,1719,724,2303],"plugin_category":[46,59],"plugin_contributors":[240189],"plugin_business_model":[],"class_list":["post-229527","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-character-limit","plugin_tags-tinymce","plugin_tags-validation","plugin_tags-wysiwyg","plugin_category-editor-and-writing","plugin_category-utilities-and-tools","plugin_contributors-codeandcore","plugin_committers-codeandcore"],"banners":{"banner":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/banner-772x250.png?rev=3279804","banner_2x":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/banner-1544x500.png?rev=3279804","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/icon-128x128.png?rev=3464144","icon_2x":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/icon-256x256.png?rev=3464144","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/screenshot-1.png?rev=3416016","caption":"<strong>Global Settings Panel<\/strong> \u2013 Configure global character limits and counter display options."},{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/Screenshot-2.png?rev=3416016","caption":"<strong>ACF Field Character Limit Setting<\/strong> \u2013 Set a character limit for individual WYSIWYG fields."},{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/Screenshot-3.png?rev=3416016","caption":"<strong>Character Counter \u2013 Normal State<\/strong> \u2013 Shows remaining characters within allowed limit."},{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/Screenshot-4.png?rev=3416016","caption":"<strong>Character Counter \u2013 Approaching Limit<\/strong> \u2013 Displays warning message when nearing the limit."},{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/Screenshot-5.png?rev=3416016","caption":"<strong>Character Counter \u2013 Limit Exceeded<\/strong> \u2013 Shows error when character count goes over the limit."},{"src":"https:\/\/ps.w.org\/wysiwyg-character-limit-for-acf\/assets\/screenshot-6.png?rev=3416016","caption":"<strong>Validation Error on Save<\/strong> \u2013 Prevents saving and displays error when strict validation is enabled."}],"raw_content":"<!--section=description-->\n<p><strong>WYSIWYG Character Limit for ACF<\/strong> is a powerful, feature-rich WordPress plugin that enables you to set <strong>maximum character limits<\/strong> for Advanced Custom Fields (ACF) WYSIWYG editor fields. Perfect for maintaining content quality, SEO optimization, and editorial consistency across your WordPress site.<\/p>\n\n<h4>\u2728 Key Features<\/h4>\n\n<p><strong>Character Limiting &amp; Counting:<\/strong><\/p>\n\n<ul>\n<li><strong>Global Character Limit<\/strong> - Set a site-wide default limit for all WYSIWYG fields<\/li>\n<li><strong>Per-Field Limits<\/strong> - Override global settings with custom limits for individual fields<\/li>\n<li><strong>Real-Time Counter<\/strong> - Live character count updates as you type<\/li>\n<li><strong>Smart HTML Exclusion<\/strong> - Counts only visible text, ignoring all HTML tags and formatting<\/li>\n<li><strong>Space Counting Options<\/strong> - Choose whether to include or exclude spaces from the count<\/li>\n<\/ul>\n\n<p><strong>Visual Feedback &amp; Validation:<\/strong><\/p>\n\n<ul>\n<li><strong>Color-Coded Counter<\/strong> - Visual indicators showing normal, warning, and error states<\/li>\n<li><strong>Customizable Colors<\/strong> - Set your own colors for counter, warning, and error states<\/li>\n<li><strong>Warning Messages<\/strong> - Configurable messages when approaching the limit<\/li>\n<li><strong>Error Messages<\/strong> - Custom error messages when limit is exceeded<\/li>\n<li><strong>Counter Position<\/strong> - Place counter above or below the editor<\/li>\n<li><strong>Server-Side Validation<\/strong> - Prevents saving content that exceeds limits<\/li>\n<\/ul>\n\n<p><strong>Editor Compatibility:<\/strong><\/p>\n\n<ul>\n<li><strong>TinyMCE Support<\/strong> - Works seamlessly in Visual editor mode<\/li>\n<li><strong>Text Mode Support<\/strong> - Full functionality in HTML\/Text editor mode<\/li>\n<li><strong>Mode Switching<\/strong> - Maintains accurate count when switching between Visual and Text modes<\/li>\n<li><strong>ACF Extended Compatible<\/strong> - Full support for ACF Extended features<\/li>\n<\/ul>\n\n<p><strong>Advanced Field Support:<\/strong><\/p>\n\n<ul>\n<li><strong>Flexible Content<\/strong> - Works inside Flexible Content layouts<\/li>\n<li><strong>Repeater Fields<\/strong> - Full support for Repeater fields<\/li>\n<li><strong>Group Fields<\/strong> - Compatible with ACF Group fields<\/li>\n<li><strong>Clone Fields<\/strong> - Works with ACF Clone fields<\/li>\n<li><strong>Dynamic Fields<\/strong> - Handles dynamically loaded fields<\/li>\n<\/ul>\n\n<p><strong>Performance &amp; Optimization:<\/strong><\/p>\n\n<ul>\n<li><strong>Lightweight Code<\/strong> - Minimal impact on page load times<\/li>\n<li><strong>Efficient Counting<\/strong> - Optimized algorithm for large content<\/li>\n<li><strong>Smart Initialization<\/strong> - Multiple triggers ensure counters work with dynamic content<\/li>\n<li><strong>No jQuery Conflicts<\/strong> - Clean, conflict-free JavaScript<\/li>\n<\/ul>\n\n<p><strong>User Experience:<\/strong><\/p>\n\n<ul>\n<li><strong>Intuitive Settings Page<\/strong> - Clean, modern admin interface with full customization<\/li>\n<li><strong>Deactivation Feedback<\/strong> - Collect valuable feedback when users deactivate the plugin<\/li>\n<li><strong>Accessibility Friendly<\/strong> - WCAG compliant with keyboard navigation<\/li>\n<li><strong>Multisite Ready<\/strong> - Works perfectly on WordPress multisite networks<\/li>\n<li><strong>Multilingual Compatible<\/strong> - Works with WPML, Polylang, and other translation plugins<\/li>\n<li><strong>Developer Friendly<\/strong> - Well-documented, clean code with hooks and filters<\/li>\n<\/ul>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ul>\n<li>The plugin automatically adds a character counter below every ACF WYSIWYG field.<\/li>\n<li>The counter updates live as you type, whether you are in Visual or Text mode.<\/li>\n<li>HTML tags are ignored in the count, so only the text that will be visible on the front-end is counted.<\/li>\n<li>If you exceed the limit, the counter turns red and saving is prevented until you reduce the character count.<\/li>\n<li>Works with dynamic fields, repeaters, flexible content, and ACF Extended.<\/li>\n<\/ul>\n\n<p><strong>Why use this plugin?<\/strong><\/p>\n\n<ul>\n<li>Maintain content standards for SEO, news, or editorial sites  <\/li>\n<li>Prevent editors from exceeding allowed content length  <\/li>\n<li>Ensure uniformity in banners, meta descriptions, and structured content  <\/li>\n<li>Save time on manual content checks  <\/li>\n<li>Improve user experience for your content team<\/li>\n<\/ul>\n\n<h4>Privacy &amp; Data Collection<\/h4>\n\n<p><strong>Your Privacy Matters<\/strong><\/p>\n\n<p>This plugin respects your privacy and operates with full transparency:<\/p>\n\n<ul>\n<li><strong>No Automatic Data Collection<\/strong> - The plugin does not collect or transmit any data without your explicit consent<\/li>\n<li><strong>Opt-In Telemetry<\/strong> - You can optionally enable anonymous usage tracking from Settings &gt; ACF WYSIWYG Limit to help improve the plugin<\/li>\n<li><strong>Deactivation Feedback<\/strong> - When deactivating, you can choose to share feedback to help us improve. This is completely optional<\/li>\n<li><strong>Encrypted Transmission<\/strong> - All data sent (if you opt-in) is encrypted using AES-256-CBC encryption for security<\/li>\n<li><strong>No Personal Content<\/strong> - We never collect your post content, user passwords, or sensitive information<\/li>\n<li><strong>What We Collect (Only if you opt-in)<\/strong>:\n\n<ul>\n<li>Plugin version and settings<\/li>\n<li>WordPress and PHP versions<\/li>\n<li>Theme information<\/li>\n<li>Site language and multisite status<\/li>\n<li>Anonymous site URL (for duplicate detection only)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>Deactivation Feedback<\/strong><\/p>\n\n<p>When you deactivate the plugin, a feedback modal appears asking for your reason. This helps us improve the plugin:<\/p>\n\n<ul>\n<li><strong>Completely Optional<\/strong> - You can skip and deactivate immediately<\/li>\n<li><strong>Contact Consent<\/strong> - Check the consent box only if you want us to follow up with support<\/li>\n<li><strong>Your Choice<\/strong> - Your name and email are only sent if you check the consent checkbox<\/li>\n<li><strong>Secure<\/strong> - All feedback is encrypted before transmission<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>This plugin is released under the <strong>GPL v2 or later<\/strong>. You are free to modify and distribute it.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/wysiwyg-character-limit-for-acf\/<\/code>  <\/li>\n<li>Activate the plugin via the <strong>Plugins<\/strong> menu in WordPress.  <\/li>\n<li>Go to <strong>Settings &gt; ACF WYSIWYG Limit<\/strong> to configure global settings and opt-in preferences.  <\/li>\n<li>To apply per-field limits, edit any ACF <strong>WYSIWYG<\/strong> field and set a <strong>Character Limit<\/strong> value.  <\/li>\n<li>The character counter will appear automatically below each WYSIWYG field.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20acf%20pro%3F\"><h3>Does this work with ACF Pro?<\/h3><\/dt>\n<dd><p>Yes, the plugin is fully compatible with <strong>ACF Free &amp; ACF Pro<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20flexible%20content%20and%20repeater%20fields%3F\"><h3>Does this work with Flexible Content and Repeater fields?<\/h3><\/dt>\n<dd><p>Yes, you can apply character limits inside <strong>Repeater, Flexible Content, and Group fields<\/strong>.<\/p><\/dd>\n<dt id=\"does%20the%20counter%20count%20html%20tags%3F\"><h3>Does the counter count HTML tags?<\/h3><\/dt>\n<dd><p><strong>No.<\/strong> As of version 2.0.2, the character counter <strong>excludes all HTML tags<\/strong> and counts only the visible text, in both Visual and Text modes.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20word%20count%20instead%3F\"><h3>Can I use this for Word Count instead?<\/h3><\/dt>\n<dd><p>Currently, the plugin only supports <strong>character count<\/strong>. A future update may add <strong>word count support<\/strong>.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20acf%20extended%20and%20dynamic%20field%20loading%3F\"><h3>Is it compatible with ACF Extended and dynamic field loading?<\/h3><\/dt>\n<dd><p>Yes, the plugin supports ACF Extended and works with dynamically loaded fields.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20counter%20style%3F\"><h3>Can I customize the counter style?<\/h3><\/dt>\n<dd><p>You can override the <code>.char-counter<\/code> CSS class in your theme or custom CSS.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.1.1 - 2026-03-18<\/h4>\n\n<ul>\n<li>New: Automatic redirect to settings page after plugin activation for first-time setup<\/li>\n<li>Enhancement: Improved plugin activation flow and user onboarding experience<\/li>\n<\/ul>\n\n<h4>4.1.0 - 2026-02-05<\/h4>\n\n<ul>\n<li>New: Deactivation feedback popup to collect user insights and improve the plugin<\/li>\n<li>New: Professional modal UI with WordPress Dashicons for deactivation reasons<\/li>\n<li>New: Optional contact consent checkbox for user support follow-up<\/li>\n<li>Enhancement: Encrypted data transmission for deactivation feedback with AES-256-CBC<\/li>\n<li>Enhancement: Comprehensive system information collection (PHP, WordPress, theme versions)<\/li>\n<li>UI: Modern, accessible deactivation modal with blur background effect<\/li>\n<li>UI: Poppins font integration for consistent typography<\/li>\n<\/ul>\n\n<h4>4.0.1 - 2026-01-29<\/h4>\n\n<ul>\n<li>Fix: Fatal error \"Call to undefined function\" during plugin update tracking.<\/li>\n<\/ul>\n\n<h4>4.0.0 - 2025-12-10<\/h4>\n\n<ul>\n<li>Full PHP\/JS\/CSS documentation across the codebase and improved code organization.<\/li>\n<li>Updated for WordPress 6.9 and PHP 8+; improved performance and accessibility.<\/li>\n<li>Optional, encrypted opt-in telemetry (no personal or post content collected).<\/li>\n<li>Enhanced uninstall cleanup, validation, and settings UX for developers and editors.<\/li>\n<li>Added extra admin settings and customization options for editors and developers.<\/li>\n<\/ul>\n\n<h4>3.0.0 - 2025-10-03<\/h4>\n\n<ul>\n<li>Fixed: Character counter now ignores all HTML tags in both Visual and Text modes (counts only visible text)<\/li>\n<li>Improved documentation and accessibility<\/li>\n<li>Enhanced compatibility with ACF Extended and dynamic field loading<\/li>\n<\/ul>\n\n<h4>2.0.1 - 2025-05-19<\/h4>\n\n<ul>\n<li>Fixed character counting in nested fields<\/li>\n<li>Improved performance for large content<\/li>\n<li>Added support for custom TinyMCE configurations<\/li>\n<\/ul>\n\n<h4>2.0 - 2025-05-19<\/h4>\n\n<ul>\n<li>Added support for WordPress 6.8<\/li>\n<li>Improved character counting accuracy<\/li>\n<li>Enhanced validation messages<\/li>\n<li>Fixed compatibility issues with ACF Pro 6.0+<\/li>\n<\/ul>\n\n<h4>1.0.0 - 2025-04-16<\/h4>\n\n<ul>\n<li>Initial release  <\/li>\n<li>Global and per-field character limits  <\/li>\n<li>Live character counter below WYSIWYG editor  <\/li>\n<li>Works in both TinyMCE and Text Mode<\/li>\n<\/ul>","raw_excerpt":"ACF WYSIWYG Character Limit adds max-character controls to ACF editors, improving content quality, and editorial standards across WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/229527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=229527"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codeandcore"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=229527"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=229527"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=229527"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=229527"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=229527"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=229527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}