Fix: Corrected @param/@return docblock types on purge_post(), purge_url(), and related methods so they match the values actually passed and returned, removing false IDE and static-analysis warnings (reported by Sjoerd Boerrigter). No runtime behavior changes.
New: CI lints PHPDoc parameter/return types against WordPress function signatures to catch docblock drift automatically.
5.9.1 (2026-05)
Update: Tested up to WordPress 7.0
Update: Requires PHP bumped from 5.6 to 7.4 to match WordPress 7.0’s PHP floor. Sites on PHP < 7.4 will not see this update.
5.8.1 (2026-03)
New: Regex purge URLs for category, tag, and blog listing pages to properly invalidate paginated archive pages (e.g., /category/news/page/2)
5.7.0 (2026-02)
New: Detection of “Vary: Accept” header which causes severe cache fragmentation.
New: Contextual Cacheability Pro recommendations in cache diagnostics, post-purge messages, plugin action links, admin menu, E2E test results, and Site Health.
5.6.4 (2026-01)
New: Added VHP_DISABLE_CRON_PURGING constant to force-disable background purging even when DISABLE_WP_CRON is enabled. Useful for low-traffic sites that use external cron but prefer immediate cache purges.
5.6.3 (2026-01)
Fix: Manual cache purge actions now execute immediately regardless of WP-Cron mode. Previously, “Purge Cache All Pages” and “Purge This Page” were queued when DISABLE_WP_CRON was enabled.
5.6.2 (2026-01)
Fix: Cacheability Pro recommendation moved to dismissable admin notice
5.6.0 (2026-01)
New: Added recommendation for Cacheability Pro cache warming plugin on settings page.
5.5.3 (2025-12)
New: End-to-End Cache Test in “Check Caching” admin page – a comprehensive 7-step test that verifies both caching AND purging work correctly, without relying on header detection heuristics.
Fix: Header Analysis tab now stays active after running a URL scan.
Fix: Removed duplicate introductory text in Header Analysis tab.
5.5.2 (2025-12)
Fix: Removed development files from WordPress.org distribution.
Fix: Added concurrency control to CI workflows to prevent SVN deploy race conditions.
5.5.1 (2025-12)
New: WP-CLI –all flag for explicit full site cache purge.
New: WP-CLI –url-only flag to purge exact URL without wildcard matching.
Doc: Fixed WP-CLI documentation – wp varnish purge correctly documented as full site purge.
Doc: Fixed “WP CLI” typo to “WP-CLI”.
Dev: Added PHPCS/PHPStan linting infrastructure and GitHub Actions CI.
Dev: New pytest coverage for WP-CLI purge command variants.
5.5.0 (2025-12)
Fix: Scheduled posts now properly purge cache when auto-published via WP-Cron. Previously, purges were queued but not processed until the next cron run, leaving stale content.
New: Added transition_post_status hook to handle future → publish transitions synchronously, ensuring immediate cache invalidation for scheduled posts.
New: Shortlink URLs (?p=XXX) are now purged when scheduled posts publish, clearing any cached 404 responses.
Doc: Added guidance on cron frequency for background purging mode – recommends every-minute cron for minimal stale content.
Dev: New pytest coverage for scheduled post publishing via WP-Cron.
5.4.0 (2025-12)
New (BETA): Optional Cache Tags / Surrogate Key purge mode, controlled via the “Use Cache Tags” setting.
New (BETA): Tag-mode enablement based on standard Surrogate-Capability headers from surrogates (Edge Architecture spec) or the VHP_VARNISH_TAGS wp-config define.
New: Admin UI improvements – properly associated labels for checkboxes and clearer explanatory copy.
Dev: Test VCL and pytest stack updated to cover tag-based purging behaviour.
5.3.0 (2025-09)
New: VHP_EXCLUDED_POST_STATUSES define to exclude statuses (e.g. drafts) from purge triggers.
New: varnish_http_purge_valid_post_statuses filter to customize statuses programmatically.
Fix: REST URL generation for tags and custom taxonomies; respect rest_base and use term IDs.
Fix: Avoid booleans in generated URL lists for REST entries.
Fix: Correct WP version check (pre-4.7 only) for deactivation logic.
Fix: Correct per-host IP loop in purge header filtering.
Fix: Properly strip query strings when deduplicating purge URLs.
Fix: Debugger wp_remote_get args and header checks (Via header scalar/array).