{"id":387298,"date":"2026-10-29T18:59:31","date_gmt":"2026-10-29T18:59:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/classicflare\/"},"modified":"2026-10-29T18:59:10","modified_gmt":"2026-10-29T18:59:10","slug":"classicflare","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/classicflare\/","author":23510762,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"ClassicFlare","header_author":"Buti\u00e1 Labs","header_description":"Clears the Cloudflare cache when posts, comments, feeds or sitemaps change.","assets_banners_color":"14213d","last_updated":"2026-10-29 18:59:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/butialabs\/classicflare","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"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":"butialabs","date":"2026-10-29 18:59:10","revision":3773804}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3773804,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3773804,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3773804,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3773804,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[146,3863,165197,3882,7914],"plugin_category":[52,59],"plugin_contributors":[267126],"plugin_business_model":[],"class_list":["post-387298","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-cdn","plugin_tags-classicpress","plugin_tags-cloudflare","plugin_tags-purge","plugin_category-performance","plugin_category-utilities-and-tools","plugin_contributors-butialabs","plugin_committers-butialabs"],"banners":{"banner":"https:\/\/ps.w.org\/classicflare\/assets\/banner-772x250.png?rev=3773804","banner_2x":"https:\/\/ps.w.org\/classicflare\/assets\/banner-1544x500.png?rev=3773804","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/classicflare\/assets\/icon-128x128.png?rev=3773804","icon_2x":"https:\/\/ps.w.org\/classicflare\/assets\/icon-256x256.png?rev=3773804","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>ClassicFlare does one thing: it keeps the copy of your site that Cloudflare holds at the edge in\nstep with your content. Publish, update or trash a post, approve a comment, and the pages that\nchanged are purged from Cloudflare, along with every page that shows them.<\/p>\n\n<ul>\n<li><strong>Posts and pages<\/strong>: the permalink, and the old one too when the slug changes<\/li>\n<li><strong>Everything that lists the post<\/strong>: the homepage and its first pages, category, tag, date,\nauthor and post type archives<\/li>\n<li><strong>Comments<\/strong>: a new approved comment, or one approved, unapproved, spammed or trashed<\/li>\n<li><strong>Feeds<\/strong>: the site feed, the comments feed, each post's comment feed and each archive's feed,\nin RSS2, Atom and RDF<\/li>\n<li><strong>Sitemaps<\/strong>: read from the index your site publishes, so the right files are cleared, from\ncore, Yoast SEO, Rank Math, All in One SEO or SEOPress<\/li>\n<li><strong>Media, categories, tags, menus and theme changes<\/strong>, each with its own switch<\/li>\n<li>A list of extra paths, such as \/llms.txt, purged alongside every automatic purge<\/li>\n<li>\"Purge this page\" and \"Purge everything\" in the toolbar, and a button on the settings screen<\/li>\n<li>A retry when Cloudflare is rate limiting or unreachable, honouring Retry-After, for only the\nURLs that failed<\/li>\n<li>Works with plain and pretty permalinks<\/li>\n<li>A public API and WP-CLI commands for deploy scripts<\/li>\n<\/ul>\n\n<p>It does not change anything in your Cloudflare zone: no cache rules, no zone settings, no page\nrules. It only ever asks Cloudflare to forget cached files.<\/p>\n\n<p>ClassicFlare is built for ClassicPress 2 and works the same on WordPress. It is not affiliated\nwith or endorsed by Cloudflare, Inc. or the ClassicPress project.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin talks to one outside service, the Cloudflare API, to clear the copy of your pages that\nCloudflare holds. Nothing else leaves your server: no update checker, no licence check, no\nanalytics.<\/p>\n\n<h4>Cloudflare API (https:\/\/api.cloudflare.com\/client\/v4\/)<\/h4>\n\n<p>Only contacted once you have configured an API token. Without one, nothing is sent.<\/p>\n\n<p>What it sends, and when:<\/p>\n\n<ul>\n<li>Your API token, as an authorization header on every request.<\/li>\n<li>When you press Connect or Test connection: a token verification request, your site's hostname\nto find the matching zone, and your zone identifier.<\/li>\n<li>The URLs to purge, in batches of up to 30, whenever content changes on your site (a post\npublished, updated or deleted, a comment approved, a term or menu edited, the theme switched),\nwhen you press a purge button, when a WP-CLI purge runs, and when a purge that failed is\nretried.<\/li>\n<\/ul>\n\n<p>It never sends visitor data, personal data or post content.<\/p>\n\n<p>Cloudflare, Inc. provides the service. Their terms and privacy policy:<\/p>\n\n<ul>\n<li>Terms of use: https:\/\/www.cloudflare.com\/website-terms\/<\/li>\n<li>Privacy policy: https:\/\/www.cloudflare.com\/privacypolicy\/<\/li>\n<\/ul>\n\n<h4>Requests to your own site<\/h4>\n\n<p>To learn which sitemap files exist, the plugin reads your own sitemap index twice a day, on\nWP-Cron. That request goes to your own site and involves no third party.<\/p>\n\n<h3>What the plugin stores<\/h3>\n\n<p>No custom tables. Settings live in the options table: one small autoloaded option, plus a few\nthat only load on the settings screen (the token, the zone details, the extra paths, the\nsitemap list and the result of the last purge). WP-Cron refreshes the sitemap list and runs\nretries.<\/p>\n\n<p>Turning on \"Delete data on uninstall\" removes all of it when you delete the plugin. Leave it off\nand nothing is removed, so deactivating to debug a conflict does not cost you your configuration.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Licensed GPL-3.0-or-later. ClassicFlare is derived from Oh My Cache! by Buti\u00e1 Labs, keeping only\nits Cloudflare integration. That code in turn reimplemented ideas from App for Cloudflare by\nDigital Point (GPL-3.0, https:\/\/wordpress.org\/plugins\/app-for-cf\/) and Nginx Helper by rtCamp\n(GPL-2.0-or-later, https:\/\/github.com\/rtCamp\/nginx-helper). Nothing third party is bundled.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin and activate it.<\/li>\n<li>In Cloudflare, go to My Profile, API Tokens, Create Token, and create a custom token with two\npermissions, limited to your site's zone: <strong>Zone \u2192 Zone \u2192 Read<\/strong> and\n<strong>Zone \u2192 Cache Purge \u2192 Purge<\/strong>.<\/li>\n<li>Go to Settings \u2192 ClassicFlare, paste the token and press Connect. The plugin checks the token,\nfinds the zone for your domain and is ready.<\/li>\n<\/ol>\n\n<h4>Keeping the token out of the database<\/h4>\n\n<p>Add this to <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'CLASSICFLARE_CF_API_TOKEN', 'your-token' );\n<\/code><\/pre>\n\n<p>or set <code>CLASSICFLARE_CF_API_TOKEN<\/code> in the environment. The token is then never written to the\ndatabase, so it stays out of backups and staging copies, and the settings screen stops offering\na field for it. <code>CLASSICFLARE_CF_ZONE_ID<\/code> does the same for the zone, skipping discovery.<\/p>\n\n<pre><code>CLASSICFLARE_DISABLE set to true switches automatic purging off, for a staging copy that shares\n<\/code><\/pre>\n\n<p>the production token.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20on%20classicpress%3F\"><h3>Does it work on ClassicPress?<\/h3><\/dt>\n<dd><p>Yes. It is written for ClassicPress 2 and needs nothing from the block editor. On WordPress it also\ncatches block editor saves, after categories and tags have been written.<\/p><\/dd>\n<dt id=\"why%20a%20token%20and%20not%20my%20global%20api%20key%3F\"><h3>Why a token and not my Global API Key?<\/h3><\/dt>\n<dd><p>The Global API Key can do anything to every zone in your account and cannot be limited. A token\ncan be limited to purging the cache of one zone, and revoked on its own.<\/p><\/dd>\n<dt id=\"a%20visitor%27s%20comment%20did%20not%20clear%20the%20page%20straight%20away\"><h3>A visitor's comment did not clear the page straight away<\/h3><\/dt>\n<dd><p>Comments posted from the front end are purged a few seconds later, on WP-Cron, so the visitor\ndoes not wait on a call to Cloudflare. If your site sets DISABLE_WP_CRON, make sure a system cron\ncalls <code>wp cron event run --due-now<\/code> every minute.<\/p><\/dd>\n<dt id=\"cloudflare%20says%20some%20urls%20are%20%22not%20in%20this%20zone%22\"><h3>Cloudflare says some URLs are \"not in this zone\"<\/h3><\/dt>\n<dd><p>The hostname in your site address is not proxied by Cloudflare (grey cloud), or belongs to another\nzone. Those URLs are reported as skipped, not failed, and are not retried.<\/p><\/dd>\n<dt id=\"which%20wp-cli%20commands%20are%20there%3F\"><h3>Which WP-CLI commands are there?<\/h3><\/dt>\n<dd><ul>\n<li><code>wp classicflare purge &lt;url&gt;...<\/code><\/li>\n<li><code>wp classicflare post &lt;id&gt; [--dry-run]<\/code><\/li>\n<li><code>wp classicflare purge-all [--yes]<\/code><\/li>\n<li><code>wp classicflare connect [&lt;token&gt;]<\/code><\/li>\n<li><code>wp classicflare test<\/code><\/li>\n<li><code>wp classicflare status<\/code><\/li>\n<\/ul><\/dd>\n<dt id=\"can%20other%20plugins%20trigger%20a%20purge%3F\"><h3>Can other plugins trigger a purge?<\/h3><\/dt>\n<dd><p>Yes, through functions or actions that do nothing if ClassicFlare is not installed:<\/p>\n\n<pre><code>do_action( 'classicflare_purge_url', [ 'https:\/\/example.com\/page\/' ] );\ndo_action( 'classicflare_purge_post', $post_id );\ndo_action( 'classicflare_purge_all' );\n<\/code><\/pre>\n\n<p>The <code>classicflare_purge_urls<\/code> filter adjusts the final list before it is sent, and\n    classicflare_sitemap_urls teaches it about a sitemap generator it does not know.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Clears the Cloudflare cache when posts, comments, feeds or sitemaps change. Works on ClassicPress and WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387298","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=387298"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/butialabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387298"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387298"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387298"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387298"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387298"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}