This is simple plugin that clear all cloudfront cache if you publish posts.
$ cd /path/to/wordpress/wp-content/plugins
$ git clone [email protected]:amimoto-ami/c3-cloudfront-clear-cache.git
$ cd c3-cloudfront-clear-cache
The plugin can be configured by defining the following environment variables:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYC3_DISTRIBUTION_IDC3_HTTP_TIMEOUT(optional) - HTTP timeout in seconds (default: 30)
Default interval is 1 minutes.
add_filter('c3_invalidation_interval', function( $interval_minutes ) {
$custom_interval = 1;
return $custom_interval;
} );
Default interval is 1 minutes.
add_filter('c3_invalidation_cron_interval', function( $interval_minutes ) {
$custom_interval = 1;
return $custom_interval;
} );
Default limit is 100.
add_filter( 'c3_invalidation_item_limits', function( $limits ) {
$custom_limit = 300;
return $custom_limit;
} );
Using the c3_invalidation_items filter, we can update the invalidation path.
add_filter( 'c3_invalidation_items', function($items){
return array('/*');
});add_filter( 'c3_invalidation_items', function( $items, $post ) {
if ( 'should-overwritten' === $post->post_name) {
return ['/slug-overwritten'];
}
return $items;
}, 10, 2 );For more specific control over path invalidation, use these new hooks:
add_filter( 'c3_invalidation_post_batch_home_path', function( $home_path, $post ) {
if ( $post && $post->post_type === 'product' ) {
return '/shop/'; // Invalidate shop page instead of home
}
return $home_path;
}, 10, 2 );add_filter( 'c3_invalidation_posts_batch_home_path', function( $home_path, $posts ) {
if ( count( $posts ) > 5 ) {
return '/'; // Use root path for large bulk operations
}
return $home_path;
}, 10, 2 );add_filter( 'c3_invalidation_manual_batch_all_path', function( $all_path ) {
return '/content/*'; // Only clear content directories
});This plugin now uses a custom AWS CloudFront implementation instead of the official AWS SDK to reduce dependencies and improve performance.
add_filter( 'c3_log_cron_invalidation_task', '__return_true' );
Log all invalidation operations (manual, automatic, and cron-based) with detailed information.
add_filter( 'c3_log_invalidation_list', '__return_true' );
This filter provides more comprehensive logging compared to c3_log_cron_invalidation_task and covers all types of invalidation operations.
The following features are deprecated since v7.0.0 due to the removal of AWS SDK dependency:
c3_aws_sdk_path- This filter is no longer needed as the plugin no longer uses AWS SDK- Any custom AWS SDK path configurations should be removed
- The plugin no longer includes or requires AWS SDK autoloader
- Remove any custom AWS SDK autoloader configurations
wp-env provides a Docker-based WordPress development environment that closely mirrors production. This is recommended for comprehensive development, testing, and debugging.
- Node.js (v14 or higher)
- Docker Desktop
# Install dependencies
$ npm install
# Start the development environment
$ npm run dev
# Run unit tests
$ npm run test
# Stop the environment
$ npm run wpenv stopThe wp-env environment uses the configuration in .wp-env.json:
- PHP 8.2
- WordPress core (latest)
- Plugin directory:
c3-cloudfront-clear-cache - Test environment port: 8889
Set up your AWS credentials for testing:
# In your shell or .env file
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export C3_DISTRIBUTION_ID="your_distribution_id"wp-now is a lightweight WordPress development environment that runs in your browser using WebAssembly. It's perfect for quick plugin testing and basic functionality verification.
- Node.js (v18 or higher)
# Install wp-now globally
$ npm install -g @wp-now/wp-now
# Navigate to your plugin directory
$ cd /path/to/c3-cloudfront-clear-cache
# Start wp-now (will create a .env file if it doesn't exist)
$ wp-now start
# Open your browser to http://localhost:8888- No PHPUnit testing support
- Limited to basic WordPress functionality testing
- AWS API calls may be restricted (use mock data for testing)
- Quick plugin activation testing
- Basic functionality verification
- UI/UX testing
- Rapid prototyping
- Full development workflow
- Unit testing with PHPUnit
- Production-like environment testing
- Comprehensive debugging
Using act to execute the workflow in your local.
$ act -P ubuntu-latest=shivammathur/node:latest