Pressable Cache Management #3 in Performance & Caching
Pressable Cache Management Plugin
by Pressable CS Team · github.com/pressable/pressable-cache-management · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/pressable/pressable-cache-management/releases/download/6.3.3/pressable-cache-management.zipReadme
Pressable Cache Management
Plugin Name: Pressable Cache Management Description: This plugin makes management of cache easy from the WordPress admin. Author: Pressable Customer Support Team
Description
Pressable Cache Management makes managing Batcache and Pressable Edge Cache settings from the WordPress admin easier instead of having to manage them from the Pressable Control Panel.
This plugin does not replace Batcache or the Pressable Control Panel but helps you manage their settings conveniently from the WordPress dashboard.
- Contributors: otarhe, wpjess, paulhtrott, georgestephanis
- Tags:
- Requires at least: WordPress 6.0
- Tested up to: WordPress 6.1
The Stable Tag should indicate the Subversion tag of the latest stable version, or “trunk” if you use
/trunk/for the stable release.
Note that the
readme.txtof the stable tag is considered the defining version for the plugin. If/trunk/readme.txtstates that the stable tag is4.3, then/tags/4.3/readme.txtis what WordPress will use to display plugin information.
Only the stable tag pointer is read from the trunk
readme.txt. This allows developers to update the trunk documentation for in-development versions without exposing those details publicly until a new stable tag is released.
If no stable tag is provided, WordPress assumes trunk is stable. However, specifying “trunk” explicitly is recommended to avoid confusion.
Installation
- Upload the plugin files to the
/wp-content/plugins/pressable-cache-managementdirectory, or install the plugin through the WordPress Plugins screen directly. - Activate the plugin through the Plugins screen in WordPress.
- Use the Settings → Pressable Cache Management screen to configure the plugin.
Frequently Asked Questions
A question that someone might have An answer to that question.
How can I install the plugin The plugin can be downloaded from the GitHub repository and installed manually via the WordPress plugin upload feature.
Screenshots
- This screenshot description corresponds to
screenshot-1.(png|jpg|jpeg|gif). The screenshot is taken from the/assetsdirectory or the directory containing the stable readme file (tagsortrunk). Screenshots in the/assetsdirectory take precedence. For example,/assets/screenshot-1.pngoverrides/tags/4.3/screenshot-1.png. - This is the second screenshot.
Changelog
Security — High
- Hardened admin notice helpers with wp_kses_post() for message content and esc_attr() for CSS class values to prevent stored XSS
- Replaced raw HTML echo in pcm_branded_notice() with wp_kses_post() filtering
- Escaped all dynamic HTML attributes (name, id, for, value) in settings callback markup
- Fixed malformed HTML: broken hidden input tag, duplicate name attributes on radio buttons, missing closing quotes on for/class attributes
- Replaced role-name authorization checks (current_user_can('administrator'), current_user_can('editor')) with proper capability checks (manage_options, edit_posts, manage_woocommerce) across all handlers
PHP 8.1 Compatibility
- Removed deprecated FILTER_SANITIZE_NUMBER_INT — replaced with simple boolean normalization for all 7 checkbox validations
- Replaced all date() calls with gmdate() and removed date_default_timezone_set()/date_default_timezone_get() timezone mutation pattern
- Standardized timestamp format to 'j M Y, g:ia UTC' across all flush actions
- Added is_array() and isset() guards before array access on option values to prevent PHP 8.1 warnings
- Updated plugin header from Requires PHP: 7.4 to Requires PHP: 8.1
Security — Medium
- Added nonce verification to Edge Cache status and Defensive Mode status AJAX endpoints
- Converted all state-changing AJAX requests from GET to POST (toolbar flush, column flush)
- Replaced die(json_encode()) with wp_send_json_success()/wp_send_json_error() for consistent response handling
- Added ABSPATH direct-access guards to flush-cache-on-comment-delete.php, remove-pressable-branding.php, wp-write-to-file-lib.php, and pcm-batcache-manager.php
- Removed @ error suppression operators from file operations in flush-batcache-for-woo-individual-page.php and wp-write-to-file-lib.php
Performance
- Replaced time() asset versioning with filemtime() for all CSS/JS enqueues — assets now cache properly in browsers
- Removed third-party Google Fonts dependency — settings page now uses system font stack
- Removed blocking sleep(2) call from Edge Cache purge flow
Maintenance
- Fixed remove-old-mu-plugins.php migration to run once (keyed on pcm_migration_version option) instead of on every admin page load
- Replaced insecure uniqid(mt_rand()) temporary filename generation with wp_unique_filename()
- Simplified remove-pressable-branding.php — removed confusing array-to-string-to-array mutation pattern
= Version 6.3.3 (Sep 2, 2026) =
- Edge Cache tab: the Defensive Mode status check is now isolated so a failure in it can never affect the Enable/Disable Edge Cache controls or the Purge Edge Cache button, and a failure shows an error message instead of leaving the status on "Finding status".
- Security: removed the unused admin/custom-functions/cache-purge-admin-bar.php, whose pressable_cache_purge AJAX handler had neither a nonce nor a capability check.
- Fixed the Cache Settings link disappearing from the admin bar menu: its node id was the generic 'settings', so any other plugin registering an admin bar node with that id overwrote it. It now uses the namespaced id 'pcm-cache-settings', is shown to users with manage_options (the capability the settings page itself requires), is hidden only while viewing the plugin's own settings page, and is now also available in the front-end Flush Cache toolbar menu.
= Version 6.2.3 (Sep 2, 2026) =
- Fixed fatal error "Cannot redeclare class Batcache_Manager" on sites that still had the legacy hyphen-named mu-plugins/pcm-batcache-manager.php written by March-July 2026 builds alongside the current pcm_batcache_manager.php.
- pcm_batcache_manager.php: wrapped the Batcache_Manager class and its instantiation in a class_exists() guard so a duplicate copy of the mu-plugin can never cause a fatal.
- flush_batcache_for_woo_individual_page.php: removes the legacy mu-plugins/pcm-batcache-manager.php on both enable and disable. Also fixed the fresh-enable check, which could never be true after a successful copy, so the cache flush and activation notice now fire on first enable as intended.
- remove_old_mu_plugins.php: legacy cleanup now also removes hyphen-era mu-plugin files (pcm-batcache-manager.php and the pcm-cache-wpp-cookies-pages, pcm-exclude-pages-from-batcache, pcm-exclude-query-string-gclid and pcm-extend-batcache variants in the pressable-cache-management folder) and the pre-2023 top-level pcm_exclude_pages_from_batcache.php.
- Fixed unreadable hover state in the admin bar Cache Management menu: hovered items showed white text on the mint background (1.8:1 contrast); hover text is now navy #040024 (11.3:1 contrast).
- Admin bar CSS is now scoped to the plugin's own menu items and prefixed with #wpadminbar, with !important on its colours, so styling from other plugins and admin colour schemes can no longer change how the menu looks, and the plugin no longer restyles other plugins' admin bar items (two global rules were removed).
- The toolbar stylesheet now declares core's admin-bar.css as a dependency so it always loads after it, is enqueued on admin_enqueue_scripts/wp_enqueue_scripts only when the admin bar is showing, and uses filemtime() versioning instead of time() so browsers can cache it.
- Security: added nonce verification (check_ajax_referer) to the admin bar Flush Object Cache, Purge Edge Cache and Flush Object & Edge Cache AJAX handlers, which previously checked only user capability and were open to CSRF.
- Security: added nonce verification to the Defensive Mode status AJAX endpoint.
- Security: removed the unused admin/custom-functions/cache-purge-admin-bar.php, whose pressable_cache_purge AJAX handler had neither a nonce nor a capability check.
= Version 6.1.3 (Sep 2, 2026) =
- exclude_pages_from_batcache_mu_plugin.php: wrapped cancel_the_cache() and disable_edge_cache() in function_exists() guards, matching the pattern already used in the gclid mu-plugin template. Behavior is unchanged; the init hook still fires once.
- pressable_cache_management_mu_plugin_index.php: switched all require statements to require_once, so the loader safely skips any file another mechanism has already included.
- exclude_pages_from_batcache.php: the mu-plugins index and the exclude-pages mu-plugin are now overwritten whenever their content differs from the bundled source (md5 comparison, same approach as the WooCommerce Batcache manager sync), instead of only being written when absent. Previously, live sites kept their original copies indefinitely and never received fixes to these files.
Version 6.1.3 (Sep 2, 2026)
- exclude_pages_from_batcache_mu_plugin.php: wrapped cancel_the_cache() and disable_edge_cache() in function_exists() guards, matching the pattern already used in the gclid mu-plugin template. Behavior is unchanged; the init hook still fires once.
- pressable_cache_management_mu_plugin_index.php: switched all require statements to require_once, so the loader safely skips any file another mechanism has already included.
- exclude_pages_from_batcache.php: the mu-plugins index and the exclude-pages mu-plugin are now overwritten whenever their content differs from the bundled source (md5 comparison, same approach as the WooCommerce Batcache manager sync), instead of only being written when absent. Previously, live sites kept their original copies indefinitely and never received fixes to these files.
Version 6.1.2 (Sep 2, 2026)
- Refactored cache flushing logic to improve clarity and maintainability
Version 6.1.1 (Sep 1, 2026)
- Added NULL-GUARD FIX for batcache manager plugin
- Bump wp-coding-standards/wpcs from 3.2.0 to 3.4.1 to handle vulnerability warning for
Version 6.1.1 (Mar 17, 2026)
Filename Standardization
- Renamed 25 PHP files from underscore to hyphen naming convention for consistency with WordPress coding standards
- Updated all require_once, include_once, copy(), and plugin_dir_path() references across the codebase to match new filenames
- Standardized deployed mu-plugin filenames (pcm-extend-batcache.php, pcm-exclude-pages-from-batcache.php, etc.)
- Removed legacy underscore duplicate files at root level (remove_old_mu_plugins.php, remove_mu_plugins_batcache_on_uninstall.php)
- Updated mu-plugin index file to reference hyphenated deployed filenames
- Updated uninstall cleanup to reference hyphenated filenames
Version 6.1.0 (Mar 12, 2026)
- Added feature to enhance Edge Cache
Version 6.0.0 (Mar 12, 2026)
- Added defensive mode feature for Edge Cache
Version 5.9.9 (Mar 08, 2026)
- Updated language string to support admin menu
- Add features to track max age
- Updated transcient for status checker
- Updated settings
- Updated validation method for exclude cache
Version 5.8.7 (Mar 07, 2026)
- Fix botton bug
- Update checkbox button color to red when disabled
- Bug fix
- Bypass Edge Cache header when Batcache checker checks for cache status
- Fix grid and margins
Version 5.5.5 (Mar 06, 2026)
- Update Edge Cache page UI
- Update button color
- Updated tooltip for Batcache status checker
Version 5.3.2 (Mar 05, 2026)
- Updated the grid to fill the full width of the centered container
Version 5.3.1 (Mar 05, 2026)
- Updated plugin updater
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| 6.3.3 | Sep 2, 2026 | pressable-cache-management.zip | 840 |
| 6.2.3 | Sep 2, 2026 | pressable-cache-management.zip | 41 |
| 6.1.3 | Sep 2, 2026 | pressable-cache-management.zip | 20 |
| 6.1.2 | Sep 2, 2026 | pressable-cache-management.zip | 308 |
| 6.1.1 | Sep 1, 2026 | pressable-cache-management.zip | 261 |
| 6.1.0 | Mar 16, 2026 | pressable-cache-management.zip | 1,293 |
| 6.0.0 | Mar 14, 2026 | pressable-cache-management.zip | 70 |
| 5.9.9 | Mar 8, 2026 | pressable-cache-management.zip | 60 |
| 5.8.9 | Mar 8, 2026 | pressable-cache-management.zip | 5 |
| 5.8.8 | Mar 8, 2026 | pressable-cache-management.zip | 21 |
| 5.8.7 | Mar 7, 2026 | pressable-cache-management.zip | 12 |
| 5.7.7 | Mar 7, 2026 | pressable-cache-management.zip | 3 |
| 5.6.7 | Mar 7, 2026 | pressable-cache-management.zip | 6 |
| 5.5.7 | Mar 7, 2026 | pressable-cache-management.zip | 20 |
| 5.5.6 | Mar 7, 2026 | pressable-cache-management.zip | 3 |
| 5.5.5 | Mar 6, 2026 | pressable-cache-management.zip | 19 |
| 5.4.5 | Mar 6, 2026 | pressable-cache-management.zip | 8 |
| 5.3.5 | Mar 6, 2026 | pressable-cache-management.zip | 5 |
| 5.3.4 | Mar 6, 2026 | pressable-cache-management.zip | 4 |
| 5.3.3 | Mar 6, 2026 | pressable-cache-management.zip | 2 |
| 5.3.2 | Mar 5, 2026 | pressable-cache-management.zip | 7 |
| 5.3.1 | Mar 5, 2026 | pressable-cache-management.zip | 3 |
| 5.3.0 | Mar 5, 2026 | pressable-cache-management.zip | 1 |
| 5.2.3 | Mar 5, 2026 | pressable-cache-management.zip | 3 |
| 5.2.2 | Oct 15, 2025 | pressable-cache-management.zip | 744 |
Active-site estimate ≈310 comes from the 6.1.2 cohort. Method.