Block Visibility Edge Cache
Handles edge cache invalidation for blocks with time-based visibility settings.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/xwp/block-visibility-edge-cache/archive/refs/heads/main.zipOn Packagist as xwp/block-visibility-edge-cache:
composer require xwp/block-visibility-edge-cacheA WordPress plugin that integrates the Block Visibility plugin with WordPress.com VIP edge caching. It ensures that edge caches are automatically purged at the exact moment a block's visibility is scheduled to change.
How it Works
When using edge caching, page content is cached at the "edge" (servers closer to the user). Traditional "Date/Time" visibility rules in the Block Visibility plugin usually rely on PHP executing during the page load to decide whether to show or hide a block. With edge caching, PHP might not run for every request, leading to stale content being served even after a visibility transition should have occurred.
This plugin solves this by:
- Parsing the blocks in a post when it is saved or published.
- Calculating all future "transition" timestamps (when a block should appear or disappear) based on the Date/Time settings.
- Scheduling background tasks using Action Scheduler to purge the post's edge cache at those specific timestamps.
Requirements
- PHP 8.4+
- WordPress 6.0+
- Block Visibility plugin
- Action Scheduler (bundled with the plugin or available via WooCommerce)
Installation
Via Composer (Recommended)
composer require xwp/block-visibility-edge-cache
Manual
- Upload the plugin folder to the
/wp-content/plugins/directory. - Activate the plugin through the 'Plugins' menu in WordPress.
- Ensure the Block Visibility plugin is also active.
Supported Visibility Controls
To maintain compatibility with edge caching, only time-based visibility controls are supported:
- Date Range: Specific start and end dates/times.
- Seasonal: Recurring date ranges every year.
- Day of Week: Showing/hiding blocks on specific days.
- Time of Day: Showing/hiding blocks during specific hours.
Disabled Controls
The following controls are automatically disabled because they depend on dynamic request data (visitor-specific) which is incompatible with static edge caching:
- Browser / Device
- Cookie
- Location
- Role / User
- Screen Size
- URL Path / Query String
- Referral Source
- WooCommerce / EDD / WP Fusion integration
- ACF fields
Developer Hooks
xwp_block_visibility_edge_cache_purged
Triggered after a post's edge cache has been purged. Useful for adding custom purging logic for other cache layers.
add_action( 'xwp_block_visibility_edge_cache_purged', function( $post_id ) {
// Custom purging logic here.
} );
Local Development & Testing
Installation
composer install
pnpm install
Running Tests
The project includes a comprehensive test suite using PHPUnit via wp-env.
# Start the WordPress environment
pnpm wp-env start
# Run PHPUnit tests
pnpm test:php
# Run PHP Code Sniffer
composer lint
# Run PHPStan
composer phpstan
License
GPLv2 or later.