{"id":346778,"date":"2026-07-31T16:15:48","date_gmt":"2026-07-31T16:15:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/publish-gate-publishing-checklist-content-rules\/"},"modified":"2026-07-31T16:15:12","modified_gmt":"2026-07-31T16:15:12","slug":"mirm-editorial-guard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mirm-editorial-guard\/","author":21060943,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"MirM Editorial Guard \u2013 Publishing Checklist & Content Rules","header_author":"Mir Monoarul Alam","header_description":"A lightweight Block Editor quality-control gateway that enforces pre-flight publication rules, blocks unverified posts, and provides role-based permission overrides.","assets_banners_color":"1e2f4c","last_updated":"2026-07-31 16:15:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/mirmpro\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mirmpro","date":"2026-07-31 16:15:12"}},"upgrade_notice":{"1.0.0":"<p>First public release. Install and activate to start enforcing your editorial standards.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3630310,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3630310,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3630310,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3630310,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"MirM Editorial Guard sidebar showing the live pre-publish checklist in the Block Editor.","2":"Failed checks featuring the \"Jump to Block\" button and visual highlight.","3":"Override dialog flow allowing Administrators to bypass rules with a reason.","4":"The main Settings page where rules can be enabled and configured."}},"plugin_section":[],"plugin_tags":[8485,148076,274063,7143,33324],"plugin_category":[],"plugin_contributors":[274064],"plugin_business_model":[],"class_list":["post-346778","plugin","type-plugin","status-publish","hentry","plugin_tags-editorial","plugin_tags-gutenberg","plugin_tags-pre-flight","plugin_tags-publishing","plugin_tags-quality-control","plugin_contributors-mirmpro","plugin_committers-mirmpro"],"banners":{"banner":"https:\/\/ps.w.org\/mirm-editorial-guard\/assets\/banner-772x250.png?rev=3630310","banner_2x":"https:\/\/ps.w.org\/mirm-editorial-guard\/assets\/banner-1544x500.png?rev=3630310","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mirm-editorial-guard\/assets\/icon-128x128.png?rev=3630310","icon_2x":"https:\/\/ps.w.org\/mirm-editorial-guard\/assets\/icon-256x256.png?rev=3630310","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Stop fixing the same editorial mistakes over and over. <strong>MirM Editorial Guard<\/strong> adds a native pre-flight checklist to the Block Editor and physically disables the Publish button until the post passes your rules.<\/p>\n\n<p>Whether you need to enforce featured images, ban placeholder text, or ensure specific custom fields are filled, your rules are evaluated live as the author types.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Native Editor Lock<\/strong> \u2014 The Publish button stays disabled until all active checks turn green. No popups, no separate screens.<\/li>\n<li><strong>Jump to Block<\/strong> \u2014 Click any failed rule (like \"Missing Alt Text\") in the sidebar to instantly scroll to and highlight the broken block.<\/li>\n<li><strong>Server-Side Guard<\/strong> \u2014 Even if someone tries to bypass the browser, the backend intercepts the publish request and forces the post back to draft.<\/li>\n<li><strong>Role Overrides<\/strong> \u2014 Admins and Editors can bypass the lock by providing a written reason. Authors cannot.<\/li>\n<\/ul>\n\n<h4>The 13 Built-in Rules<\/h4>\n\n<p>Turn these on or off, and tweak their thresholds, directly from Settings &gt; MirM Editorial Guard.<\/p>\n\n<ol>\n<li><strong>Featured Image<\/strong> \u2014 The post must have a featured image set.<\/li>\n<li><strong>Image Alt Text<\/strong> \u2014 Every single image block must have alt text.<\/li>\n<li><strong>Minimum Word Count<\/strong> \u2014 Body text must hit your specified minimum (e.g., 300 words).<\/li>\n<li><strong>Maximum Word Count<\/strong> \u2014 Body text cannot exceed your hard limit.<\/li>\n<li><strong>No Placeholder Text<\/strong> \u2014 Rejects \"Lorem Ipsum\" and generic test phrases.<\/li>\n<li><strong>Title Required<\/strong> \u2014 The post title cannot be empty.<\/li>\n<li><strong>Excerpt Required<\/strong> \u2014 A manual excerpt must be written.<\/li>\n<li><strong>Require Text<\/strong> \u2014 The content must contain a specific phrase or regex pattern.<\/li>\n<li><strong>Ban Text<\/strong> \u2014 The content cannot contain specific banned words.<\/li>\n<li><strong>Minimum Categories<\/strong> \u2014 Ensure posts are categorized before publishing.<\/li>\n<li><strong>Minimum Tags<\/strong> \u2014 Require a baseline number of tags.<\/li>\n<li><strong>Required Meta Field<\/strong> \u2014 Ensure specific custom fields (like SEO titles) are filled.<\/li>\n<li><strong>Required Blocks<\/strong> \u2014 Force the inclusion of specific blocks (e.g., <code>core\/heading<\/code>).<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mirm-editorial-guard<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it through the 'Plugins' menu.<\/li>\n<li>Go to <strong>Settings &gt; MirM Editorial Guard<\/strong> to choose and configure your rules.<\/li>\n<li>Open the Block Editor. You will see the new MirM Editorial Guard icon in the top right.<\/li>\n<\/ol>\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>No. MirM Editorial Guard is built strictly for the Block Editor (Gutenberg). The backend guard will still block empty posts, but the checklist UI requires Gutenberg.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20the%20editor%3F\"><h3>Will this slow down the editor?<\/h3><\/dt>\n<dd><p>No. Validation runs client-side using highly optimized checks. It takes milliseconds, even on massive posts.<\/p><\/dd>\n<dt id=\"what%20if%20a%20rule%20is%20broken%20but%20the%20post%20needs%20to%20go%20live%3F\"><h3>What if a rule is broken but the post needs to go live?<\/h3><\/dt>\n<dd><p>Administrators and Editors can click \"Override\" in the sidebar. They must type a reason to unlock the Publish button. Authors and Contributors do not have this ability.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Fixed fatal PHP syntax error in REST API controller.<\/li>\n<li>Fixed React deprecation warnings for WordPress 6.5+.<\/li>\n<li>Fixed category and tag live evaluation issues in the Block Editor sidebar.<\/li>\n<li>Cleaned up dead JavaScript AJAX code.<\/li>\n<li>13 built-in rules with customizable settings.<\/li>\n<li>Real-time sidebar integration for Gutenberg.<\/li>\n<li>Jump to Block utility.<\/li>\n<li>Role-based override flow.<\/li>\n<li>Double-layer validation (JavaScript frontend + PHP backend).<\/li>\n<li>Settings page under Settings &gt; MirM Editorial Guard.<\/li>\n<\/ul>","raw_excerpt":"A lightweight pre-publish checklist that locks the Publish button until authors meet your exact content standards.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346778","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=346778"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mirmpro"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346778"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346778"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346778"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346778"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346778"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}