{"id":198851,"date":"2024-08-08T10:54:52","date_gmt":"2024-08-08T10:54:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/content-revalidation-tracker\/"},"modified":"2025-11-03T11:01:58","modified_gmt":"2025-11-03T11:01:58","slug":"content-revalidation-tracker","status":"publish","type":"plugin","link":"https:\/\/ku.wordpress.org\/plugins\/content-revalidation-tracker\/","author":14438263,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.0","stable_tag":"2.0.0","tested":"6.8.5","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Content Revalidation Tracker","header_author":"Dropndot Solutions","header_description":"Content Revalidation Tracker builds post after creation or edition","assets_banners_color":"d7a176","last_updated":"2025-11-03 11:01:58","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/dropndot.com\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/content-revalidation-tracker\/","header_author_uri":"https:\/\/dropndot.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":1029,"num_ratings":2,"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":"Dropndot","date":"2025-05-09 06:19:29"},"1.0.1":{"tag":"1.0.1","author":"Dropndot","date":"2025-05-09 09:27:00"},"2.0.0":{"tag":"2.0.0","author":"Dropndot","date":"2025-11-03 11:01:58"}},"upgrade_notice":{"2.0.0":"<p>Major update \u2013 includes prefix mapping, manual testing, and improved logging. Please review settings after upgrading.<\/p>\n\n<hr \/>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3133106,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3133106,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3133106,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3133106,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3133106,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3388722,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3388722,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3388722,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"<strong>Settings Page<\/strong> \u2013 Configure your frontend domain, secret key, and prefix mapping.","2":"<strong>Custom Prefix Mapping<\/strong> \u2013 Define custom URL prefixes for your post types and taxonomies to match your frontend routing structure.","3":"<strong>Manual Test Tool &amp; Activity Log<\/strong> \u2013 Test your setup easily from the dashboard and view the latest revalidation events."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1556,141196,211409,211411,17693],"plugin_category":[],"plugin_contributors":[229120],"plugin_business_model":[],"class_list":["post-198851","plugin","type-plugin","status-publish","hentry","plugin_tags-api","plugin_tags-headless","plugin_tags-nextjs","plugin_tags-revalidation","plugin_tags-static","plugin_contributors-dropndot","plugin_committers-dropndot"],"banners":{"banner":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/banner-772x250.png?rev=3133106","banner_2x":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/banner-1544x500.png?rev=3133106","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/icon.svg?rev=3133106","icon":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/icon.svg?rev=3133106","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/screenshot-1.png?rev=3388722","caption":"<strong>Settings Page<\/strong> \u2013 Configure your frontend domain, secret key, and prefix mapping."},{"src":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/screenshot-2.png?rev=3388722","caption":"<strong>Custom Prefix Mapping<\/strong> \u2013 Define custom URL prefixes for your post types and taxonomies to match your frontend routing structure."},{"src":"https:\/\/ps.w.org\/content-revalidation-tracker\/assets\/screenshot-3.png?rev=3388722","caption":"<strong>Manual Test Tool &amp; Activity Log<\/strong> \u2013 Test your setup easily from the dashboard and view the latest revalidation events."}],"raw_content":"<!--section=description-->\n<p>The <strong>Content Revalidation Tracker<\/strong> plugin seamlessly connects your WordPress site with your frontend framework (such as <strong>Next.js<\/strong>, <strong>Nuxt<\/strong>, or <strong>Gatsby<\/strong>) to trigger revalidation via a secure API endpoint every time content changes \u2014 ensuring your site always serves the most up-to-date pages.<\/p>\n\n<p>This plugin is ideal for <strong>headless WordPress<\/strong> setups that use static site generation or incremental static regeneration. Whenever you update, publish, or delete posts, pages, or taxonomies, the plugin automatically sends a secure API call to your frontend to revalidate the affected pages.<\/p>\n\n\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Automatic Revalidation<\/strong> \u2013 Triggers a revalidation request whenever a post, user, or taxonomy is created, updated, trashed, or deleted.<\/li>\n<li><strong>Custom Prefix Mapping (New in v2)<\/strong> \u2013 Define custom URL prefixes for your post types and taxonomies to match your frontend routing structure.<\/li>\n<li><strong>Granular Configuration<\/strong> \u2013 Choose which post types and taxonomies are revalidated via filters.<\/li>\n<li><strong>Secure API Communication<\/strong> \u2013 Use a secret key and domain configuration to ensure authorized revalidation requests.<\/li>\n<li><strong>Admin Test Tool (New in v2)<\/strong> \u2013 Test revalidation manually from the settings page to confirm configuration.<\/li>\n<li><strong>Developer Friendly<\/strong> \u2013 Includes hooks and filters for advanced customization.<\/li>\n<\/ul>\n\n\n\n<h3>Ideal For<\/h3>\n\n<ul>\n<li>WordPress sites powered by <strong>Next.js<\/strong>, <strong>Nuxt<\/strong>, or other static\/hybrid frameworks.<\/li>\n<li>Developers who want <strong>automated page revalidation<\/strong> after content changes.<\/li>\n<li>Headless WordPress sites that require fast and fresh content delivery.<\/li>\n<\/ul>\n\n\n\n<h3>Support<\/h3>\n\n<p>For support and troubleshooting, please visit <a href=\"https:\/\/dropndot.com\">Dropndot Solutions<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder <code>content-revalidation-tracker<\/code> to the <code>\/wp-content\/plugins\/<\/code> directory, or install it directly from the WordPress Plugin Directory.<\/li>\n<li>Activate the plugin through the \u2018Plugins\u2019 screen in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Content Revalidation Tracker<\/strong> to configure your:\n\n<ul>\n<li><strong>Frontend Domain (e.g., <code>https:\/\/example.com<\/code>)<\/strong><\/li>\n<li><strong>Secret Key (e.g., <code>ad43d49b3f2e4847a6f6<\/code>)<\/strong><\/li>\n<\/ul><\/li>\n<li>(Optional) Configure custom prefix mapping for post types or taxonomies.<\/li>\n<li>Your site will now automatically trigger revalidation whenever relevant content updates occur.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='q%3A%20what%20kind%20of%20frontend%20does%20this%20plugin%20support%3F'><h3>Q: What kind of frontend does this plugin support?<\/h3><\/dt>\n<dd><p>A: It\u2019s designed for frameworks like <strong>Next.js<\/strong>, <strong>Nuxt.js<\/strong>, and <strong>Gatsby<\/strong> \u2014 any platform that supports revalidation through a secure API route.<\/p><\/dd>\n<dt id='q%3A%20do%20i%20need%20to%20add%20a%20special%20endpoint%20on%20my%20frontend%3F'><h3>Q: Do I need to add a special endpoint on my frontend?<\/h3><\/dt>\n<dd><p>A: Yes. You\u2019ll need to create an endpoint (e.g., <code>\/api\/revalidate<\/code>) on your frontend that listens for POST requests containing the <code>secret<\/code> and <code>path<\/code> values.<\/p><\/dd>\n<dt id='q%3A%20can%20i%20manually%20trigger%20revalidation%3F'><h3>Q: Can I manually trigger revalidation?<\/h3><\/dt>\n<dd><p>A: Yes, use the \u201cTest Revalidation\u201d button in the plugin settings to manually send a request.<\/p><\/dd>\n<dt id='q%3A%20does%20this%20plugin%20work%20with%20custom%20post%20types%20or%20taxonomies%3F'><h3>Q: Does this plugin work with custom post types or taxonomies?<\/h3><\/dt>\n<dd><p>A: Absolutely. You can enable or map them from the plugin settings or through filters.<\/p><\/dd>\n<dt id='q%3A%20is%20this%20compatible%20with%20caching%20plugins%3F'><h3>Q: Is this compatible with caching plugins?<\/h3><\/dt>\n<dd><p>A: Yes. The plugin works alongside caching plugins \u2014 its job is to notify your frontend to refresh specific pages.<\/p>\n\n<\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added: Custom post type and taxonomy prefix mapping.<\/li>\n<li>Added: Manual test revalidation tool.<\/li>\n<li>Added: Log limit configuration.<\/li>\n<li>Improved: Error handling and debugging.<\/li>\n<li>Enhanced: Security validation and code optimization.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with automatic revalidation for posts, pages, and users.<\/li>\n<li>Added secure secret key validation.<\/li>\n<li>Included dashboard logging and admin notices.<\/li>\n<\/ul>","raw_excerpt":"Auto-triggers frontend revalidation on post, page, user, or taxonomy updates. Ideal for Next.js and headless WordPress setups.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/198851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=198851"}],"author":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dropndot"}],"wp:attachment":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=198851"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=198851"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=198851"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=198851"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=198851"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=198851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}