{"id":348302,"date":"2026-08-17T19:22:18","date_gmt":"2026-08-17T19:22:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/page-content-guard\/"},"modified":"2026-08-17T19:21:42","modified_gmt":"2026-08-17T19:21:42","slug":"page-content-guard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/page-content-guard\/","author":23537511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.3.3","stable_tag":"2.3.3","tested":"7.0.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Page Content Guard","header_author":"Harbour Atelier","header_description":"Monitor important WordPress content for missing records, publication problems, changed URLs, stored-title changes and saved-content rules, with privacy-safe diagnostics.","assets_banners_color":"e6e4e7","last_updated":"2026-08-17 19:21:42","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/donate.stripe.com\/eVq28sa7c56mc0JaOF18c00","header_plugin_uri":"https:\/\/harbouratelier.uk\/wordpress-plugins\/page-content-guard\/","header_author_uri":"https:\/\/harbouratelier.uk\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":12,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.3.3":{"tag":"2.3.3","author":"harbouratelier","date":"2026-08-17 19:21:42"}},"upgrade_notice":{"2.3.3":"<p>This maintenance update hardens administrator request handling and improves WordPress.org namespace compatibility.<\/p>","2.3.1":"<p>This security-focused update hardens administrator request handling and keeps the extension API 1.3 integration boundary for compatible add-ons.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3651633,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3651633,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3651633,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3651633,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.3.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3651633,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3651633,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3651633,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3651633,"resolution":"4","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Monitor overview with status totals, current-problem notice and monitored content list.","2":"Monitor filters and expanded quick actions for checking, pausing, editing or deleting a monitor.","3":"Current Problems screen with issue details, content context and resolution actions.","4":"Monitor configuration for core checks, title integrity and required content fragments."}},"plugin_section":[262246],"plugin_tags":[276158,276157,2662,7143,276159],"plugin_category":[],"plugin_contributors":[276160],"plugin_business_model":[],"class_list":["post-348302","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-broken-content","plugin_tags-content-monitoring","plugin_tags-permalink","plugin_tags-publishing","plugin_tags-required-text","plugin_contributors-harbouratelier","plugin_committers-harbouratelier"],"banners":{"banner":"https:\/\/ps.w.org\/page-content-guard\/assets\/banner-772x250.jpg?rev=3651633","banner_2x":"https:\/\/ps.w.org\/page-content-guard\/assets\/banner-1544x500.jpg?rev=3651633","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/page-content-guard\/assets\/icon-128x128.png?rev=3651633","icon_2x":"https:\/\/ps.w.org\/page-content-guard\/assets\/icon-256x256.png?rev=3651633","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/page-content-guard\/assets\/screenshot-1.png?rev=3651633","caption":"Monitor overview with status totals, current-problem notice and monitored content list."},{"src":"https:\/\/ps.w.org\/page-content-guard\/assets\/screenshot-2.png?rev=3651633","caption":"Monitor filters and expanded quick actions for checking, pausing, editing or deleting a monitor."},{"src":"https:\/\/ps.w.org\/page-content-guard\/assets\/screenshot-3.png?rev=3651633","caption":"Current Problems screen with issue details, content context and resolution actions."},{"src":"https:\/\/ps.w.org\/page-content-guard\/assets\/screenshot-4.png?rev=3651633","caption":"Monitor configuration for core checks, title integrity and required content fragments."}],"raw_content":"<!--section=description-->\n<p>Project page: https:\/\/harbouratelier.uk\/wordpress-plugins\/page-content-guard\/<\/p>\n\n<p>Page Content Guard is a local content-state monitor for important pages, posts and supported public custom post types.<\/p>\n\n<p>It can report when monitored content:<\/p>\n\n<ul>\n<li>is permanently deleted,<\/li>\n<li>is no longer published,<\/li>\n<li>receives a changed permalink,<\/li>\n<li>has a stored title that differs from an optional accepted baseline,<\/li>\n<li>has clearly blank standard WordPress content,<\/li>\n<li>loses a required saved-content fragment.<\/li>\n<\/ul>\n\n<p>Administrators receive privacy-safe Site Health checks for the monitor schema and a bounded sample of stored monitor data. Native WordPress content lists show a compact linked state for monitored items and can be filtered to monitored or unmonitored content. Unmonitored rows remain blank in the added column. A compact WordPress dashboard widget shows active, paused, unchecked and currently problematic monitor counts without exposing titles, URLs, rules or issue details.<\/p>\n\n<p>Page Content Guard checks WordPress records and standard <code>post_content<\/code> stored in the database. It does not open or render the public page, test HTTP status, submit forms, execute shortcodes, render dynamic blocks, restore content, block changes, provide uptime monitoring or protect against hacking.<\/p>\n\n<p>No external API, account, telemetry, analytics, remote image or tracking request is used.<\/p>\n\n<h3>FREE and PRO<\/h3>\n\n<p>The FREE edition is usable without an expiry date and has no quantitative limit on active monitors or required fragments. It includes manual checks and checks after relevant content changes.<\/p>\n\n<p>Page Content Guard Pro is a separate add-on. It adds scheduled checks, email notifications, incident history, advanced stored-value integrity checks, forbidden fragments and bulk tools.<\/p>\n\n<p>Compare FREE and PRO: https:\/\/harbouratelier.gumroad.com\/l\/Page-Content-Guard-PRO<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores monitor configuration, current issue state, operational timestamps and - when integrity checks are enabled - SHA-256 baseline fingerprints, capture times, small display snapshots or attachment IDs, and optional WordPress revision IDs in the local WordPress database. Full <code>post_content<\/code> is not copied into an integrity baseline. It sends no data to the developer or another hosted service. If PRO email notifications are enabled, issue summaries are passed to the site's configured WordPress mail system and the selected recipients.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin, or copy the <code>page-content-guard<\/code> directory to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate Page Content Guard separately on the intended site.<\/li>\n<li>Open Page Content Guard &gt; Monitors.<\/li>\n<li>Select Add Monitor and choose an important published content item.<\/li>\n<li>Configure the available checks and select Save &amp; Check.<\/li>\n<\/ol>\n\n<p>Network-wide activation on Multisite is not supported. Individual-site activation is supported.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20test%20the%20public%20page%3F\"><h3>Does this test the public page?<\/h3><\/dt>\n<dd><p>No. It checks the WordPress content record, generated permalink and standard stored <code>post_content<\/code>. It does not make an HTTP request or render frontend output.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20a%20page%20builder%3F\"><h3>Will it work with a page builder?<\/h3><\/dt>\n<dd><p>Existence, publication and usable-permalink checks may work for an eligible content type. Blank-content and fragment checks inspect standard <code>post_content<\/code> only, so they may not represent content stored exclusively in builder-specific fields.<\/p><\/dd>\n<dt id=\"how%20does%20title%20integrity%20work%3F\"><h3>How does title integrity work?<\/h3><\/dt>\n<dd><p>Title integrity is optional and disabled by default. When you enable it, Page Content Guard records the exact title value currently stored by WordPress as the baseline. A later stored-title change opens one stable problem. Saving the monitor does not silently update the baseline. The problem resolves when the title returns exactly to the baseline, the check is disabled, or an administrator explicitly accepts the current title as the new baseline.<\/p><\/dd>\n<dt id=\"does%20free%20run%20scheduled%20checks%20or%20send%20email%3F\"><h3>Does FREE run scheduled checks or send email?<\/h3><\/dt>\n<dd><p>No. FREE checks after relevant content events and through manual Check or Check all actions. Scheduling, notifications, stored-content\/excerpt\/featured-image integrity, forbidden fragments, incident history, Bulk Setup and Accept All Current URLs are supplied only by the separate Page Content Guard Pro plugin.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20pro%20is%20deactivated%3F\"><h3>What happens when PRO is deactivated?<\/h3><\/dt>\n<dd><p>All non-paused monitors and all required fragments remain active in FREE. PRO integrity baselines, forbidden rules, PRO history and PRO settings are preserved but their paid behavior remains unavailable until compatible PRO reactivation.<\/p><\/dd>\n<dt id=\"can%20i%20review%20wordpress%20revisions%20from%20a%20problem%3F\"><h3>Can I review WordPress revisions from a problem?<\/h3><\/dt>\n<dd><p>When the monitored post still exists, revisions are enabled and the current user may edit that content, Page Content Guard shows links to the native WordPress revisions screen. Revision availability is optional context only and never changes the monitoring result.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20content%20is%20deleted%3F\"><h3>What happens when content is deleted?<\/h3><\/dt>\n<dd><p>The monitor remains and reports a missing-content problem using its retained title, post type and expected URL snapshots.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Data is preserved by default. The Settings screen includes an explicit option to remove all Page Content Guard FREE and PRO tables, settings, run state and scheduled events when the FREE plugin is deleted.<\/p><\/dd>\n<dt id=\"does%20this%20make%20my%20site%20legally%20compliant%3F\"><h3>Does this make my site legally compliant?<\/h3><\/dt>\n<dd><p>No. The plugin can monitor selected stored wording, but it does not provide legal advice or guarantee compliance.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3.3<\/h4>\n\n<ul>\n<li>Hardened administrator request handling with shape validation, unslashing and context-appropriate sanitization.<\/li>\n<li>Updated localized JavaScript configuration names to use the plugin's unique HAPCG namespace.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Removed the previous FREE limits on active monitors and required fragments, so all valid non-paused monitors and fragments remain active without PRO.<\/li>\n<\/ul>","raw_excerpt":"Monitor WordPress content for deletion, publication changes, changed URLs, title changes, blank content and missing required fragments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348302","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=348302"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/harbouratelier"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348302"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348302"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348302"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348302"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348302"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}