{"id":343336,"date":"2026-07-20T14:07:18","date_gmt":"2026-07-20T14:07:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/paradarum-cdn-purge\/"},"modified":"2026-07-20T14:07:08","modified_gmt":"2026-07-20T14:07:08","slug":"paradarum-cdn-purge","status":"publish","type":"plugin","link":"https:\/\/fuc.wordpress.org\/plugins\/paradarum-cdn-purge\/","author":23533967,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Paradarum CDN Purge","header_author":"Paradarum","header_description":"Automatically purges the Paradarum CDN cache when content is published or modified (posts, pages, listings, archives, taxonomies, feeds\u2026). Uses your account API key to invalidate only the affected routes.","assets_banners_color":"e8cdd8","last_updated":"2026-07-20 14:07:08","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paradarum.com\/","header_plugin_uri":"https:\/\/paradarum.com\/","header_author_uri":"","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":"paradarum","date":"2026-07-20 14:07:08"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3614985,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3614985,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3614985,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3614985,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Connection settings with automatic property detection.","2":"Purge behaviour: strategy, bulk-import threshold and content toggles.","3":"Manual purge tools and the recent purges log."}},"plugin_section":[],"plugin_tags":[146,3863,247,7914],"plugin_category":[52,54,59],"plugin_contributors":[272460],"plugin_business_model":[],"class_list":["post-343336","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-cdn","plugin_tags-performance","plugin_tags-purge","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-paradarum","plugin_committers-paradarum"],"banners":{"banner":"https:\/\/ps.w.org\/paradarum-cdn-purge\/assets\/banner-772x250.png?rev=3614985","banner_2x":"https:\/\/ps.w.org\/paradarum-cdn-purge\/assets\/banner-1544x500.png?rev=3614985","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/paradarum-cdn-purge\/assets\/icon-128x128.png?rev=3614985","icon_2x":"https:\/\/ps.w.org\/paradarum-cdn-purge\/assets\/icon-256x256.png?rev=3614985","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>When you publish, update, unpublish or trash a post or page \u2014 or edit a term, or a comment is approved \u2014 this plugin invalidates the affected CDN routes through the Paradarum API, using your account API key.<\/p>\n\n<p>It does not just purge the single post: it also purges the home page, the relevant category\/tag\/taxonomy archives, author and date archives, feeds and sitemaps, so visitors never see a stale listing.<\/p>\n\n<h4>How it decides what to purge<\/h4>\n\n<ul>\n<li><strong>Hybrid (recommended):<\/strong> the post and the home are purged by exact path; archives and listings are purged by path prefix (<code>starts_with<\/code>) so their pagination (<code>\/page\/2\/<\/code>, \u2026) is invalidated too.<\/li>\n<li><strong>Surgical:<\/strong> only exact URLs are purged (archive pagination may stay cached).<\/li>\n<li><strong>Broad:<\/strong> any change flushes the whole site cache.<\/li>\n<\/ul>\n\n<p>All routes affected during a request are collected, de-duplicated and sent to the API in a single batch call on <code>shutdown<\/code>, so saving in the editor is never slowed down by many HTTP requests. If a single save or import touches more paths than the configurable threshold, the plugin collapses everything into one full-site purge instead.<\/p>\n\n<h4>Requirements<\/h4>\n\n<p>This plugin requires a <a href=\"https:\/\/paradarum.com\/\">Paradarum CDN<\/a> account: your site must be configured as a property on the Paradarum CDN, and you need an API key generated from the Paradarum console. Without an account the plugin has nothing to purge.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>Paradarum CDN API<\/strong> (<code>https:\/\/api.paradarum.com<\/code>), the service that hosts and caches your site's content. This connection is the core purpose of the plugin and cannot be disabled.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>Your account <strong>API key<\/strong> (as the <code>X-API-Key<\/code> request header) \u2014 on every API call, to authenticate.<\/li>\n<li>When you click <strong>Check &amp; detect<\/strong> in the settings: a request to list the properties (sites) of your account, so the plugin can match this site's domain.<\/li>\n<li>When content changes (publish\/update\/trash of posts or pages, term edits, comment approval) and when you use the manual purge tools or WP-CLI commands: the <strong>property id<\/strong> and the list of <strong>URL paths to invalidate<\/strong> (for example <code>\/my-post\/<\/code> or <code>\/category\/news\/<\/code>).<\/li>\n<\/ul>\n\n<p>No visitor data, personal data, analytics or telemetry is ever transmitted. Requests are only sent after you have configured your own API key.<\/p>\n\n<p>This service is provided by Paradarum: <a href=\"https:\/\/console.paradarum.com\/legal\/terms\">terms of service<\/a> \u2014 <a href=\"https:\/\/console.paradarum.com\/legal\/privacy\">privacy policy<\/a>.<\/p>\n\n<h3>WP-CLI<\/h3>\n\n<pre><code>wp paradarum status\nwp paradarum purge --all\nwp paradarum purge --url=\/blog\/\nwp paradarum purge --post=42&lt;h3&gt;Developer hooks&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Trigger a purge from your own code:<\/p>\n\n<pre><code>do_action( 'paradarum_purge', array( home_url( '\/landing\/' ) ) );\ndo_action( 'paradarum_purge', 'all' );\n<\/code><\/pre>\n\n<p>Filter the final purge items before they are sent:<\/p>\n\n<pre><code>add_filter( 'paradarum_cdn_purge_items', function ( $items, $trigger ) {\n    return $items;\n}, 10, 2 );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from <strong>Plugins \u2192 Add New<\/strong> (search for \"Paradarum CDN Purge\") or upload the zip, then activate it.<\/li>\n<li>In the Paradarum console, create an API key (<strong>Account \u2192 API keys<\/strong>) and copy it \u2014 it is shown only once.<\/li>\n<li>Go to <strong>Settings \u2192 Paradarum CDN<\/strong> and paste your <strong>API key<\/strong> (<code>pdm_\u2026<\/code>).<\/li>\n<li>Click <strong>Check &amp; detect<\/strong>. The plugin lists your account properties and auto-selects the one whose hostname matches this site. If it can't detect one, pick it from the list.<\/li>\n<li>Click <strong>Save property<\/strong>. Automatic purging is now active.<\/li>\n<\/ol>\n\n<p>The API key is stored encrypted (AES-256-CBC, keyed from your site's <code>AUTH_KEY<\/code>\/<code>AUTH_SALT<\/code>). Alternatively you may define it in <code>wp-config.php<\/code>, which takes precedence over the value stored in the database:<\/p>\n\n<pre><code>define( 'PARADARUM_API_KEY', 'pdm_\u2026' );\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paradarum%20account%3F\"><h3>Do I need a Paradarum account?<\/h3><\/dt>\n<dd><p>Yes. The plugin purges the cache of the Paradarum CDN, so your site must be a property of a Paradarum account and you need an API key from the console. See the External services section for what data is exchanged.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20saving%20or%20publishing%3F\"><h3>Does it slow down saving or publishing?<\/h3><\/dt>\n<dd><p>No. Purge routes are collected during the request and sent in a single batch call after the response is finished (<code>shutdown<\/code> hook), so the editor never waits for the CDN.<\/p><\/dd>\n<dt id=\"what%20exactly%20gets%20purged%20when%20i%20update%20a%20post%3F\"><h3>What exactly gets purged when I update a post?<\/h3><\/dt>\n<dd><p>The post permalink, the home page, the archives it belongs to (categories, tags, custom taxonomies, author, dates) including their pagination, the feeds and the sitemaps. You can toggle each group in the settings, or switch to the Surgical\/Broad strategies.<\/p><\/dd>\n<dt id=\"can%20i%20purge%20manually%3F\"><h3>Can I purge manually?<\/h3><\/dt>\n<dd><p>Yes: <strong>Settings \u2192 Paradarum CDN<\/strong> has \"Purge all cache\" and \"Purge a URL\" buttons, and there are WP-CLI commands (<code>wp paradarum purge --all<\/code>, <code>--url=\u2026<\/code>, <code>--post=\u2026<\/code>).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20multisite%3F\"><h3>Does it work with Multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site stores its own API key and property, and the uninstall cleans up every site.<\/p><\/dd>\n<dt id=\"where%20is%20my%20api%20key%20stored%3F\"><h3>Where is my API key stored?<\/h3><\/dt>\n<dd><p>Encrypted (AES-256-CBC) in the options table, keyed from your site's <code>AUTH_KEY<\/code>\/<code>AUTH_SALT<\/code> secrets \u2014 or, if you prefer, only in <code>wp-config.php<\/code> via the <code>PARADARUM_API_KEY<\/code> constant.<\/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":"Automatically purges the Paradarum CDN cache for the routes affected whenever you publish or modify content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/343336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=343336"}],"author":[{"embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/paradarum"}],"wp:attachment":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=343336"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=343336"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=343336"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=343336"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=343336"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=343336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}