WP Manifestindependent plugin directory
manifest / performance / block-visibility-edge-cache

Block Visibility Edge Cache

Handles edge cache invalidation for blocks with time-based visibility settings.

★ 2stars

Install

Download source zip No release zip yet

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.zip

On Packagist as xwp/block-visibility-edge-cache:

composer require xwp/block-visibility-edge-cache
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

A 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:

  1. Parsing the blocks in a post when it is saved or published.
  2. Calculating all future "transition" timestamps (when a block should appear or disappear) based on the Date/Time settings.
  3. Scheduling background tasks using Action Scheduler to purge the post's edge cache at those specific timestamps.

Requirements

Installation

Via Composer (Recommended)

composer require xwp/block-visibility-edge-cache

Manual

  1. Upload the plugin folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the 'Plugins' menu in WordPress.
  3. 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.