{"id":373734,"date":"2026-10-09T01:25:18","date_gmt":"2026-10-09T01:25:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/contentguard\/"},"modified":"2026-10-10T03:04:54","modified_gmt":"2026-10-10T03:04:54","slug":"contentlatch","status":"publish","type":"plugin","link":"https:\/\/is.wordpress.org\/plugins\/contentlatch\/","author":23571106,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"ContentLatch","header_author":"ContentLatch","header_description":"Define content rules for WordPress Core and ACF fields, then validate before publication.","assets_banners_color":"a9bec7","last_updated":"2026-10-10 03:04:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":121,"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":"elijahwill","date":"2026-10-09 02:30:55","revision":3735790},"1.0.1":{"tag":"1.0.1","author":"elijahwill","date":"2026-10-10 03:04:54","revision":3737541}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3735762,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3735762,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3735804,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3735790,"resolution":"1","location":"assets","locale":"","width":1524,"height":1660},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3735790,"resolution":"2","location":"assets","locale":"","width":1526,"height":1124},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3735790,"resolution":"3","location":"assets","locale":"","width":1526,"height":894},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3735790,"resolution":"4","location":"assets","locale":"","width":1526,"height":1472}},"screenshots":{"1":"Create custom content rules with conditional logic, field validation, and blocking or warning severity.","2":"Manage governance rules across post types, with severity controls, activation status, and audit findings.","3":"Prevent noncompliant content updates and highlight missing required fields directly in the WordPress block editor.","4":"Audit existing content against active rules, review blocking issues and warnings, and navigate to affected content."}},"plugin_section":[],"plugin_tags":[2211,19795,273416,33324,724],"plugin_category":[59],"plugin_contributors":[285207],"plugin_business_model":[],"class_list":["post-373734","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-content-audit","plugin_tags-content-governance","plugin_tags-quality-control","plugin_tags-validation","plugin_category-utilities-and-tools","plugin_contributors-elijahwill","plugin_committers-elijahwill"],"banners":{"banner":"https:\/\/ps.w.org\/contentlatch\/assets\/banner-772x250.png?rev=3735804","banner_2x":"https:\/\/ps.w.org\/contentlatch\/assets\/banner-1544x500.png?rev=3735762","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/contentlatch\/assets\/icon-256x256.png?rev=3735762","icon_2x":"https:\/\/ps.w.org\/contentlatch\/assets\/icon-256x256.png?rev=3735762","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/contentlatch\/assets\/screenshot-1.png?rev=3735790","caption":"Create custom content rules with conditional logic, field validation, and blocking or warning severity."},{"src":"https:\/\/ps.w.org\/contentlatch\/assets\/screenshot-2.png?rev=3735790","caption":"Manage governance rules across post types, with severity controls, activation status, and audit findings."},{"src":"https:\/\/ps.w.org\/contentlatch\/assets\/screenshot-3.png?rev=3735790","caption":"Prevent noncompliant content updates and highlight missing required fields directly in the WordPress block editor."},{"src":"https:\/\/ps.w.org\/contentlatch\/assets\/screenshot-4.png?rev=3735790","caption":"Audit existing content against active rules, review blocking issues and warnings, and navigate to affected content."}],"raw_content":"<!--section=description-->\n<p>ContentLatch is a WordPress content governance and validation plugin. Site administrators define rules for WordPress Core and Advanced Custom Fields (ACF) fields, then ContentLatch evaluates content against those rules when editors save or publish.<\/p>\n\n<p>Define the content rules your site requires, then automatically validate content against those rules before publication.<\/p>\n\n<p>ContentLatch is not an AI tool, SEO scanner, malware scanner, spell checker, or content generator. It enforces the rules you configure.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Create a rule for a post type.<\/li>\n<li>Optionally choose when the rule applies (a WHEN condition).<\/li>\n<li>Optionally choose what must be true (a THEN validation).<\/li>\n<li>Choose severity: Blocking or Warning.<\/li>\n<li>ContentLatch evaluates content during editing and save.<\/li>\n<li>Blocking findings prevent publishing or updating published\/private content.<\/li>\n<li>Warnings alert the editor but do not block publication.<\/li>\n<li>Run an Audit to evaluate existing published and private content against your active rules.<\/li>\n<\/ol>\n\n<p>A rule needs at least a WHEN condition or a THEN validation. You may create a condition-only rule (WHEN without THEN). When that condition matches, the rule itself becomes the finding. That is useful for governance rules such as prohibited terminology.<\/p>\n\n<h4>WordPress Core fields<\/h4>\n\n<ul>\n<li>Title<\/li>\n<li>Content<\/li>\n<li>Excerpt<\/li>\n<li>Slug<\/li>\n<li>Featured Image<\/li>\n<li>Author<\/li>\n<\/ul>\n\n<h4>ACF field types<\/h4>\n\n<p>Supported scalar types:<\/p>\n\n<ul>\n<li>Text, Textarea, Number, Range<\/li>\n<li>Email, URL, Password<\/li>\n<li>WYSIWYG<\/li>\n<li>Select (single), Radio, Button Group, True\/False<\/li>\n<li>Date Picker, Date Time Picker<\/li>\n<li>Color Picker<\/li>\n<\/ul>\n\n<p>Supported structures:<\/p>\n\n<ul>\n<li>Group \u2192 scalar<\/li>\n<li>Repeater \u2192 scalar<\/li>\n<li>Nested Repeater \u2192 scalar (up to two Repeater levels)<\/li>\n<li>Flexible Content \u2192 scalar, and Flexible Content \u2192 Group \u2192 scalar<\/li>\n<li>Clone \u2192 scalar, and Clone \u2192 Group \u2192 scalar (seamless or group display)<\/li>\n<li>Clone inside Repeater or Flexible Content<\/li>\n<li>Repeater \u2192 Clone \u2192 scalar<\/li>\n<\/ul>\n\n<p>Not supported in V1 (examples): Relationship, Post Object, Page Link, Taxonomy, User, Checkbox, Gallery, Image, File, Link, Google Map, oEmbed, multi-select Select, deeper than two Repeater levels, Repeater \u2192 Group, Repeater inside Flexible Content, nested Flexible Content, and Clone \u2192 Clone \/ Repeater \/ Flexible Content.<\/p>\n\n<p>ACF field validation requires Advanced Custom Fields 6.0 or higher (Free or Pro). Repeater, Flexible Content, and Clone require ACF Pro. WordPress Core field validation works without ACF.<\/p>\n\n<h4>Conditions (WHEN)<\/h4>\n\n<ul>\n<li>Equals \/ Not equals<\/li>\n<li>Empty \/ Not empty<\/li>\n<li>Contains \/ Does not contain<\/li>\n<li>Greater than \/ Greater than or equal<\/li>\n<li>Less than \/ Less than or equal<\/li>\n<\/ul>\n\n<p>Contains and does not contain are WHEN conditions only. They are not THEN validators.<\/p>\n\n<p>Numeric comparisons apply to number and range fields. Date fields support equals, not equals, empty, and not empty.<\/p>\n\n<h4>Validations (THEN)<\/h4>\n\n<ul>\n<li>Required<\/li>\n<li>Minimum length<\/li>\n<li>Maximum length<\/li>\n<li>Allowed values<\/li>\n<\/ul>\n\n<h4>Severity<\/h4>\n\n<ul>\n<li><strong>Blocking<\/strong> \u2014 Prevents publishing or updating content when the rule fails. In V1, blocking applies to publish and private update flows. Drafts, autosaves, and revisions are not blocked.<\/li>\n<li><strong>Warning<\/strong> \u2014 Shows an editor notice but does not prevent publishing.<\/li>\n<\/ul>\n\n<h4>Editors and save paths<\/h4>\n\n<ul>\n<li>Classic Editor<\/li>\n<li>Block editor (Gutenberg)<\/li>\n<li>ACF save validation<\/li>\n<li>WordPress Core field validation<\/li>\n<\/ul>\n\n<p>Blocking and warning behavior is available on these supported paths. ContentLatch does not add WooCommerce-specific rules, GraphQL support, or custom Gutenberg block-level rule building beyond the Core and ACF fields listed above.<\/p>\n\n<h4>Content Audit<\/h4>\n\n<p>Audit evaluates existing published and private content against your active rules.<\/p>\n\n<ul>\n<li>Results summarize content that passed, needs attention, or needs review.<\/li>\n<li>Findings identify the affected field and rule.<\/li>\n<li>Repeater findings retain row context.<\/li>\n<li>Completed audit runs can be reviewed historically.<\/li>\n<li>Large sites may take longer because audits process content in batches.<\/li>\n<\/ul>\n\n<p>Audit reports issues. It does not change your content.<\/p>\n\n<h4>Permissions<\/h4>\n\n<p>Managing rules and running audits requires the ContentLatch management capability (granted to administrators on activation). Editors are validated when they save content they can edit. Blocking rules prevent non-compliant content from being published or updated on the supported save paths.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>ContentLatch does not send plugin data to external services. Rules, audit results, and validation run on your WordPress site.<\/p>\n\n<h4>Uninstall \/ data removal<\/h4>\n\n<p>Deleting (uninstalling) ContentLatch removes its stored plugin data from the site, including:<\/p>\n\n<ul>\n<li>All ContentLatch rules<\/li>\n<li>Audit runs and findings (custom database tables)<\/li>\n<li>The ContentLatch management capability<\/li>\n<\/ul>\n\n<p>Deactivating the plugin without deleting it keeps this data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress Admin, go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>ContentLatch<\/strong>, then install and activate it.<\/li>\n<li>For ACF field validation, install and activate Advanced Custom Fields 6.0 or higher (Free or Pro, as needed for your field types). WordPress Core field validation works without ACF.<\/li>\n<li>Alternatively, install from a downloaded package: upload the plugin ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or place the plugin folder at <code>\/wp-content\/plugins\/contentlatch<\/code>, then activate ContentLatch.<\/li>\n<li>Open <strong>ContentLatch<\/strong> in the admin menu to create rules and run audits.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20contentlatch%20require%20advanced%20custom%20fields%20%28acf%29%3F\"><h3>Does ContentLatch require Advanced Custom Fields (ACF)?<\/h3><\/dt>\n<dd><p>No. ContentLatch works with WordPress Core fields without ACF installed. To validate ACF fields, Advanced Custom Fields 6.0 or higher (Free or Pro) is required. ACF Pro is required for Repeater, Flexible Content, and Clone fields.<\/p><\/dd>\n<dt id=\"can%20i%20create%20a%20rule%20with%20only%20a%20when%20condition%3F\"><h3>Can I create a rule with only a WHEN condition?<\/h3><\/dt>\n<dd><p>Yes. When the condition matches, the rule becomes the finding. Use Blocking or Warning severity as needed.<\/p><\/dd>\n<dt id=\"does%20audit%20change%20my%20content%3F\"><h3>Does Audit change my content?<\/h3><\/dt>\n<dd><p>No. Audit only reports findings against your active rules.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>Uninstalling removes ContentLatch rules, audit data, and the ContentLatch management capability. Deactivation alone does not remove that data.<\/p><\/dd>\n<dt id=\"does%20contentlatch%20work%20with%20the%20block%20editor%3F\"><h3>Does ContentLatch work with the block editor?<\/h3><\/dt>\n<dd><p>Yes. ContentLatch validates supported Core and ACF fields in both the Classic Editor and the block editor on the supported save paths.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix misleading admin notice that implied Advanced Custom Fields was required for all ContentLatch features. ACF remains optional for WordPress Core field validation; a warning is shown only when an installed ACF version is older than 6.0.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Rule-based content validation for WordPress Core and ACF fields.<\/li>\n<li>WHEN conditions and THEN validations, including condition-only rules.<\/li>\n<li>Blocking and warning severity.<\/li>\n<li>Classic Editor and block editor validation.<\/li>\n<li>ACF Group, Repeater (including two-level nesting), Flexible Content, and Clone support as documented above.<\/li>\n<li>Site-wide content audits with historical review and Repeater row context.<\/li>\n<li>Uninstall removes ContentLatch rules, audit data, and capability.<\/li>\n<\/ul>","raw_excerpt":"Define the content rules your site requires, then automatically validate content against those rules before publication.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373734"}],"author":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/elijahwill"}],"wp:attachment":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373734"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373734"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373734"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373734"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373734"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}