{"id":334285,"date":"2026-07-02T12:19:58","date_gmt":"2026-07-02T12:19:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-required-fields-validator\/"},"modified":"2026-07-11T04:49:23","modified_gmt":"2026-07-11T04:49:23","slug":"effortless-required-fields-validator","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/effortless-required-fields-validator\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.14","stable_tag":"1.4.14","tested":"7.0.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"EffortLess Required Fields Validator","header_author":"domclic","header_description":"Forces all users to fill Title, Content, Featured Image and Category before publishing posts. Works with both the block editor (Gutenberg) and Classic Editor.","assets_banners_color":"9e9e9e","last_updated":"2026-07-11 04:49:23","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/id7.dev\/donate\/","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":156,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.12":{"tag":"1.4.12","author":"domclic","date":"2026-07-10 03:26:03"},"1.4.13":{"tag":"1.4.13","author":"domclic","date":"2026-07-10 03:30:56"},"1.4.14":{"tag":"1.4.14","author":"domclic","date":"2026-07-11 04:49:23"},"1.4.7":{"tag":"1.4.7","author":"domclic","date":"2026-07-02 12:19:32"},"1.4.8":{"tag":"1.4.8","author":"domclic","date":"2026-07-10 03:25:43"},"1.4.9":{"tag":"1.4.9","author":"domclic","date":"2026-07-10 00:07:41"}},"upgrade_notice":{"1.4.14":"<p>Critical fix: resolves a fatal error introduced in 1.4.12 that broke wp-admin entirely. Update immediately if you&#039;re on 1.4.12 or 1.4.13.<\/p>","1.4.12":"<p>Moves the donate message to the plugin settings page. No validation logic changes.<\/p>","1.3.0":"<p>Major rewrite: Gutenberg validation now uses React hooks (registerPlugin). Fixes subscribe loops and false publish errors. Classic editor validation simplified.<\/p>","1.2.0":"<p>Uses official WordPress lockPostSaving API. Classic editor featured image fix. Quick\/bulk edit compatibility. Plugin Check compliant.<\/p>","1.1.1":"<p>Critical fix: Gutenberg validation now works correctly for pages and when updating published posts. WPCS compliant. Tested with WordPress 6.9.<\/p>","1.0.8":"<p>Important update: All users (including admins) now require validation. Improved translation support for multilingual sites.<\/p>","1.0.7":"<p>Recommended update for better WordPress.org compliance and security improvements.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3602085,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3602085,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3602085,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3602085,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.12","1.4.13","1.4.14","1.4.7","1.4.8","1.4.9"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Warning banner showing missing required fields in Gutenberg editor","2":"Disabled Publish button when required fields are missing","3":"Validation error message in Classic Editor","4":"All required fields completed - ready to publish"}},"plugin_section":[],"plugin_tags":[89,1795,166,266794,1460],"plugin_category":[50],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-334285","plugin","type-plugin","status-publish","hentry","plugin_tags-category","plugin_tags-featured-image","plugin_tags-posts","plugin_tags-required-fields","plugin_tags-title","plugin_category-media","plugin_contributors-domclic","plugin_committers-domclic"],"banners":{"banner":"https:\/\/ps.w.org\/effortless-required-fields-validator\/assets\/banner-772x250.jpg?rev=3602085","banner_2x":"https:\/\/ps.w.org\/effortless-required-fields-validator\/assets\/banner-1544x500.jpg?rev=3602085","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/effortless-required-fields-validator\/assets\/icon-128x128.jpg?rev=3602085","icon_2x":"https:\/\/ps.w.org\/effortless-required-fields-validator\/assets\/icon-256x256.jpg?rev=3602085","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Effortless Required Fields Validator<\/strong> ensures content quality by requiring all users to complete essential fields before publishing posts and pages in the WordPress Gutenberg editor.<\/p>\n\n<h4>Required Fields<\/h4>\n\n<ul>\n<li><strong>Title<\/strong> - Post\/page title must not be empty<\/li>\n<li><strong>Content<\/strong> - Post\/page content must not be empty<\/li>\n<li><strong>Featured Image<\/strong> - A featured image must be set<\/li>\n<li><strong>Category<\/strong> - At least one category must be selected (posts only)<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Works for all users<\/strong> - Admins, Editors, Authors, and Contributors all have the same validation<\/li>\n<li><strong>Real-time validation<\/strong> - Publish button is disabled until all required fields are filled<\/li>\n<li><strong>Visual feedback<\/strong> - Warning message shows which fields are missing<\/li>\n<li><strong>Gutenberg optimized<\/strong> - Seamless integration with the block editor<\/li>\n<li><strong>Multilingual ready<\/strong> - Fully translatable with included French translation<\/li>\n<li><strong>Lightweight<\/strong> - Minimal performance impact<\/li>\n<li><strong>Clean code<\/strong> - Follows WordPress coding standards<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>When editing a post or page, the plugin monitors all required fields<\/li>\n<li>If any field is missing, the Publish button is automatically disabled<\/li>\n<li>A prominent warning banner shows which fields need to be completed<\/li>\n<li>Once all fields are filled, publishing is allowed<\/li>\n<li>Server-side validation ensures posts cannot be published without required fields<\/li>\n<\/ol>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Maintain consistent content quality across your site<\/li>\n<li>Ensure all posts have featured images for better social media sharing<\/li>\n<li>Enforce editorial standards for multi-author blogs<\/li>\n<li>Prevent incomplete posts from being published accidentally<\/li>\n<li>Improve SEO by requiring complete content<\/li>\n<\/ul>\n\n<h4>Translations<\/h4>\n\n<ul>\n<li>English (default)<\/li>\n<li>French (Fran\u00e7ais) - included<\/li>\n<li>Translation ready - submit your translations!<\/li>\n<\/ul>\n\n<h3>Developer Notes<\/h3>\n\n<h4>Filters Available<\/h4>\n\n<p>Currently, the plugin doesn't provide filters for customization, but this may be added in future versions based on community feedback.<\/p>\n\n<h4>Translation<\/h4>\n\n<p>To translate this plugin:<\/p>\n\n<ol>\n<li>Use the provided <code>.pot<\/code> file in the <code>\/languages<\/code> folder<\/li>\n<li>Create your translation using Poedit or similar tool<\/li>\n<li>For JavaScript translations, compile JSON files using WP-CLI:\n   wp i18n make-json languages\/ --no-purge<\/li>\n<li>Submit your translation to the plugin author<\/li>\n<\/ol>\n\n<h4>Support<\/h4>\n\n<p>For support, please use the WordPress.org support forums or visit the plugin's GitHub repository (if available).<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin does not collect, store, or transmit any user data. It only validates post\/page fields locally in the WordPress editor.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Developed by domclic with \u2764\ufe0f for the WordPress community.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Go to Plugins &gt; Add New<\/li>\n<li>Search for \"Effortless Required Fields Validator\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Go to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the ZIP file and click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<p>The plugin works immediately after activation. No configuration needed!<\/p>\n\n<p>Simply try to publish a post or page without filling all required fields, and you'll see the validation in action.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20classic%20editor%3F\"><h3>Does this work with the Classic Editor?<\/h3><\/dt>\n<dd><p>Yes! The plugin includes validation for both Gutenberg and the Classic Editor.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20which%20fields%20are%20required%3F\"><h3>Can I customize which fields are required?<\/h3><\/dt>\n<dd><p>Currently, the plugin requires Title, Content, Featured Image, and Category (for posts). Customization options may be added in future versions based on user feedback.<\/p><\/dd>\n<dt id=\"does%20it%20work%20for%20custom%20post%20types%3F\"><h3>Does it work for custom post types?<\/h3><\/dt>\n<dd><p>Currently, the plugin only validates the 'post' and 'page' post types. Support for custom post types may be added in future versions.<\/p><\/dd>\n<dt id=\"can%20admins%20bypass%20the%20validation%3F\"><h3>Can admins bypass the validation?<\/h3><\/dt>\n<dd><p>No. As of version 1.0.8, all users (including administrators) must complete all required fields before publishing. This ensures consistent content quality across your entire site.<\/p><\/dd>\n<dt id=\"will%20this%20affect%20my%20existing%20posts%3F\"><h3>Will this affect my existing posts?<\/h3><\/dt>\n<dd><p>No. The validation only applies when publishing new posts or updating existing ones. Your existing published posts remain unaffected.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20gutenberg%20blocks%3F\"><h3>Does it work with Gutenberg blocks?<\/h3><\/dt>\n<dd><p>Yes! The plugin is fully compatible with the Gutenberg block editor and all standard blocks.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20try%20to%20publish%20without%20required%20fields%3F\"><h3>What happens if I try to publish without required fields?<\/h3><\/dt>\n<dd><p>In Gutenberg, the Publish button will be disabled and a warning banner will show which fields are missing. In the Classic Editor, you'll see an error message with a link to return to editing.<\/p><\/dd>\n<dt id=\"is%20it%20translation%20ready%3F\"><h3>Is it translation ready?<\/h3><\/dt>\n<dd><p>Yes! The plugin is fully translatable and includes French translation. You can add your own translations using the provided .pot file.<\/p><\/dd>\n<dt id=\"does%20it%20impact%20site%20performance%3F\"><h3>Does it impact site performance?<\/h3><\/dt>\n<dd><p>No. The plugin only loads its assets on post\/page edit screens and has minimal performance impact.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.14<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Fatal error on activation\/admin load \u2014 <code>includes\/class-settings-page.php<\/code> was referenced in 1.4.12 but never shipped, breaking every admin page including the Plugins list.<\/li>\n<\/ul>\n\n<h4>1.4.12<\/h4>\n\n<ul>\n<li>Moved the support\/donate message into a small plugin settings page.<\/li>\n<li>Added a Settings link in the plugin row. No donate notice is shown on the Plugins screen.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><strong>Rewritten:<\/strong> JavaScript validation now uses <code>registerPlugin<\/code> with React hooks (<code>useSelect<\/code>, <code>useEffect<\/code>) \u2014 eliminates subscribe loop<\/li>\n<li><strong>Improved:<\/strong> Uses <code>lockPostSaving<\/code>\/<code>unlockPostSaving<\/code> via React lifecycle for proper publish blocking<\/li>\n<li><strong>Improved:<\/strong> Warning banner rendered as a React portal component<\/li>\n<li><strong>Improved:<\/strong> Gutenberg validation is fully client-side \u2014 removed REST API filters that caused false publish errors<\/li>\n<li><strong>Improved:<\/strong> Simplified classic editor validation with cleaner function signature<\/li>\n<li><strong>Fixed:<\/strong> Classic editor featured image detection on new posts via <code>$_POST['_thumbnail_id']<\/code><\/li>\n<li><strong>Fixed:<\/strong> Quick edit and bulk edit no longer trigger validation<\/li>\n<li><strong>Fixed:<\/strong> <code>wp_die()<\/code> output sanitized with <code>wp_kses()<\/code>, back link uses <code>wp_get_referer()<\/code><\/li>\n<li><strong>Fixed:<\/strong> Removed unused CSS rules and assets<\/li>\n<li><strong>Added:<\/strong> <code>Requires at least<\/code> and <code>Requires PHP<\/code> headers in main plugin file<\/li>\n<li>Release date: March 28, 2026<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Server-side validation now works for pages in Gutenberg (added <code>rest_pre_insert_page<\/code> filter)<\/li>\n<li><strong>Fixed:<\/strong> Featured image and category validation uses REST request payload instead of relying on unsaved post meta<\/li>\n<li><strong>Fixed:<\/strong> Validation now falls back to stored post data when fields are not in the request payload<\/li>\n<li><strong>Fixed:<\/strong> Publish status detection on updates to already-published posts<\/li>\n<li><strong>Fixed:<\/strong> XSS risk in JavaScript warning banner (replaced innerHTML with safe DOM methods)<\/li>\n<li><strong>Improved:<\/strong> Full WordPress Coding Standards (WPCS) compliance<\/li>\n<li><strong>Improved:<\/strong> Yoda conditions, long array syntax, tab indentation, proper PHPDoc<\/li>\n<li><strong>Updated:<\/strong> All translation files regenerated (POT, PO, MO, JSON) with correct line references<\/li>\n<li><strong>Tested:<\/strong> Compatible with WordPress 6.9<\/li>\n<li>Release date: March 27, 2026<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li><strong>Changed:<\/strong> All users (including admins) now have the same validation requirements<\/li>\n<li><strong>Added:<\/strong> Proper text domain loading for better translation support<\/li>\n<li><strong>Fixed:<\/strong> JavaScript translation support with JSON file generation instructions<\/li>\n<li><strong>Improved:<\/strong> Code documentation and comments<\/li>\n<li><strong>Improved:<\/strong> Emoji encoding in error messages<\/li>\n<li><strong>Updated:<\/strong> Translation files (.pot and French .po)<\/li>\n<li>Release date: November 20, 2025<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed all WordPress.org Plugin Check errors<\/li>\n<li>Fully standards-compliant i18n and security<\/li>\n<li>Release date: November 19, 2025<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Code cleanup and better validation<\/li>\n<li>Improved error handling<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed role detection for Editor\/Author\/Contributor<\/li>\n<li>Better compatibility with different user roles<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Initial improvements and bug fixes<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Forces Title, Content, Featured Image and Category before publishing posts\/pages in Gutenberg.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334285"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334285"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334285"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334285"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334285"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334285"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}