Skip to main content

Customizing BigScoots Cache with Actions, Filters & Helper Functions

Customizing BigScoots Cache with action, filter, constants and other helper functions.

Written by Saumya Majumder

This page contains advanced customization options for BigScoots Cache and is intended for developers. If you don't know how to write code, please do not try to tinker with these options as it can lead to breaking your website.

BigScoots Cache not only has an extensive settings page to manage every part of page caching, but also has many actions, filters, and helper methods to allow you to customize your page caching experience.

Configuring the plugin with PHP Constants

The BigScoots Cache plugin has support for the following PHP constants that you can add inside wp-config.php to overwrite the default values:

  • BS_CACHE_CURL_TIMEOUT — timeout in seconds for cURL calls (default: 10)

  • BS_CACHE_HOME_PAGE_SHOWS_POSTS — if the front page a.k.a. the home page of the website, shows the latest posts (default: true [bool])


Modifying the plugin behaviors with Filters

Filters let you fine-tune the plugin's behavior by adding small code snippets (e.g. in your theme's functions.php or a code snippets plugin). Here are the filters provided by this plugin.

Cache Specific URLs That Would Otherwise Be Bypassed

Filter name: bs_cache_cacheable_url_patterns — [3 Arguments - $patterns (Array), $request_uri (String), $rest_route (String)]

If a URL or URL pattern is bypassed from cache and you would like to cache that URL pattern (or a sub-pattern of it), use this filter to list the URL patterns (WP REST API or normal path) that should be cached even if a default rule asks the plugin to bypass them. * works as a wildcard.

$rest_route is only filled in when the WP REST API bypass option is turned on, and the request is a REST API call made with ?rest_route=.

add_filter('bs_cache_cacheable_url_patterns', function(array $patterns, string $request_uri, string $rest_route) : array {
$patterns[] = '/wp-json/foo-app/v1*'; // a WP REST API endpoint
$patterns[] = '/promo/*'; // a normal path in your bypass list
return $patterns;
}, 10, 3);

Make Bypassed URLs Cacheable for Logged-in Users

Filter name: bs_cache_logged_in_user_cacheable_url_patterns — [1 Argument - $patterns (Array)]

Only for the Boost plan with cache for logged-in users turned on. URLs that match these patterns are cached per user instead of being bypassed. They are never shared between users.

add_filter('bs_cache_logged_in_user_cacheable_url_patterns', function(array $patterns) : array {
$patterns[] = '/my-account/some-page*';
$patterns[] = '/account/test*';
return $patterns;
});

Bypass Cache

Filter name: bs_cache_cache_bypass — [1 Argument - $bypass (Bool)]

Return true to bypass BigScoots Cache for the current request. Always add a condition; otherwise, the cache is bypassed for the whole website.

add_filter('bs_cache_cache_bypass', function(bool $bypass) : bool {
if (is_page('live-scores')) {
return true; // bypass cache for this page only
}
return $bypass;
});

Bypass cache on every page while a WooCommerce notice is pending

Filter name: bs_cache_bypass_woo_notices_sitewide — [1 Argument - $bypass (Bool)]

When a visitor has a pending WooCommerce notice (e.g. "Product added to cart"), BigScoots Cache bypasses the cache on WooCommerce pages (shop, product, cart, checkout, account) so the notice is not cached for everyone. If your theme shows WooCommerce notices on every page, use this filter to bypass the cache site-wide while a notice is pending.

add_filter('bs_cache_bypass_woo_notices_sitewide', '__return_true');

Post Types to ignore from cache purge operation

Filter name: bs_cache_ignored_post_types — [1 Argument - $list_of_post_types (Array)]

Many WordPress websites have custom post types that never need a cache purge (e.g. shop_order, shop_coupon, attachment). By default, BigScoots Cache purges cache for changes in every post type except the ones excluded in the plugin settings. Use this filter to add more post types to that list.

add_filter('bs_cache_ignored_post_types', function(array $list_of_post_types) : array {
$list_of_post_types[] = 'shop_order';
$list_of_post_types[] = 'shop_coupon';
$list_of_post_types[] = 'attachment';
$list_of_post_types[] = 'some_other_cpt';
return $list_of_post_types;
});

Add more web pages to the related URL list

Filter name: bs_cache_post_related_url_init — [2 Arguments - $list_of_urls (Array), $post_id (Int)]

When you publish or update a post, BigScoots Cache purges the cache for that post and its related pages (home page, category, tag and other taxonomy pages, author and archive pages, along with their paginated pages).

If there is a page that should also be purged whenever you publish or update content, use this filter to add it to the related URL list.

add_filter('bs_cache_post_related_url_init', function(array $list_of_urls) : array {
$list_of_urls[] = home_url('/some-page/');
$list_of_urls[] = home_url('/some-other-page/');
return $list_of_urls;
});

The same filter, using the post ID to add a page only for a specific post type:

add_filter('bs_cache_post_related_url_init', function(array $list_of_urls, int $post_id) : array {
if (get_post_type($post_id) === 'job_listing') {
$list_of_urls[] = home_url('/job-board/');
}
return $list_of_urls;
}, 10, 2);

Tip: For a single page, you can also turn on Purge this page when other content changes in the BigScoots Cache box on the page's edit screen. That page is then purged whenever any post or page on the site is published, updated, or deleted. This works well for pages that list other content, such as a Query Loop page.

Disable Related URLs purge

Filter name: bs_cache_disable_related_urls_purge — [2 Arguments - $disable_related_urls_purge (Bool), $post_id (Int)]


Please Note: Using this filter is highly discouraged unless you have a specific reason for it. When it is enabled, the plugin won't purge the cache for any related URLs like the home page, taxonomy, author, or other archive pages. Only the post that was published or updated gets purged.

// Disable related URLs purge for the entire site
add_filter('bs_cache_disable_related_urls_purge', '__return_true');

// Disable related URLs purge for certain post IDs only
add_filter('bs_cache_disable_related_urls_purge', function(bool $disable_related_urls_purge, int $post_id) : bool {
if ($post_id === 10 || $post_id === 20) {
$disable_related_urls_purge = true;
}
return $disable_related_urls_purge;
}, 10, 2);

Purge the entire page cache on every post update

Filter name: bs_cache_auto_purge_entire_page_cache — [1 Argument - $purge_entire_page_cache (Bool)]

Return true to purge the entire page cache (HTML only, not static files) whenever a post is published, updated, or deleted, instead of purging only that post and its related pages. Use it only if your site shows content in places the related-page purge can't reach.

add_filter('bs_cache_auto_purge_entire_page_cache', '__return_true');

Post types that purge the entire page cache

Filter name: bs_cache_full_purge_post_types — [1 Argument - $post_types (Array)]

Some post types don't have a page of their own but change every page on the site. For these, BigScoots Cache purges the entire page cache when they are edited. By default these are the block theme types wp_template, wp_template_part, wp_navigation and wp_global_styles. Use this filter to add your own.

add_filter('bs_cache_full_purge_post_types', function(array $post_types) : array {
$post_types[] = 'my_site_wide_banner';
return $post_types;
});

Choose which post types show the BigScoots Cache box

Filter name: bs_cache_meta_box_post_types — [1 Argument - $post_types (Array)]

The BigScoots Cache box on the post edit screen lets you bypass the cache for a single post or page. It is shown on every public post type, except the post types excluded in the plugin settings. Use this filter to add or remove post types by their name (e.g. product).

add_filter('bs_cache_meta_box_post_types', function(array $post_types) : array {
// Hide the box on WooCommerce products
return array_values(array_diff($post_types, ['product']));
});

Offer "Purge this page when other content changes" on more post types

Filter name: bs_cache_related_page_post_types — [1 Argument - $post_types (Array)]

By default, the Purge this page when other content changes option is only shown on Pages. If a page builder or theme uses its own post type for pages, add it here.

add_filter('bs_cache_related_page_post_types', function(array $post_types) : array {
$post_types[] = 'my_landing_page';
return $post_types;
});

Set the CDN Cache TTL dynamically

Filter name: bs_cache_cdn_cache_ttl — [1 Argument - $cdn_cache_ttl (Int)]

Changes the max-age value inside the CDN-Cache-Control header, which tells BigScoots Cache how long a page is cached at the CDN level.

For logged-in user cache (Boost), single event pages from The Events Calendar and Polylang per-language domains, the CDN TTL is capped at 10 hours, and this filter can't raise it above that.

add_filter('bs_cache_cdn_cache_ttl', function(int $cdn_cache_ttl) : int {
if (is_page('latest')) { // the page with the slug 'latest'
$cdn_cache_ttl = 2 * WEEK_IN_SECONDS;
} elseif (is_page('test-page')) { // the page with the slug 'test-page'
$cdn_cache_ttl = 5 * MONTH_IN_SECONDS;
}
return $cdn_cache_ttl;
});

Set the Browser Cache TTL dynamically

Filter name: bs_cache_browser_cache_ttl — [1 Argument - $browser_cache_ttl (Int)]

Changes the max-age value inside the Cache-Control header, which tells the browser how long to cache a page.

add_filter('bs_cache_browser_cache_ttl', function(int $browser_cache_ttl) : int {
if (is_page('latest')) {
$browser_cache_ttl = 0; // don't let the browser cache this page
} elseif (is_page('test-page')) {
$browser_cache_ttl = 10; // cache it in the browser for 10 seconds only
}
return $browser_cache_ttl;
});

Set the CDN Cache Stale-While-Revalidate TTL dynamically

Filter name: bs_cache_stale_while_revalidate — [1 Argument - $swr_ttl (Int), default 60]

Changes the stale-while-revalidate value inside the CDN-Cache-Control header: how long an expired page can still be served from the CDN while a fresh copy is fetched.

add_filter('bs_cache_stale_while_revalidate', function(int $swr_ttl) : int {
if (is_page('latest')) {
$swr_ttl = 10; // 10 seconds
}
return $swr_ttl;
});

Set the CDN Cache Stale-If-Error TTL dynamically

Filter name: bs_cache_stale_if_error — [1 Argument - $sie_ttl (Int), default 3600]

Changes the stale-if-error value inside the CDN-Cache-Control header: how long an expired page can still be served from the CDN while the origin server returns a 5XX or other error.

add_filter('bs_cache_stale_if_error', function(int $sie_ttl) : int {
if (is_page('latest')) {
$sie_ttl = 10; // 10 seconds
}
return $sie_ttl;
});

Modify the Cache-Control value dynamically

Filter name: bs_cache_control — [1 Argument - $cache_control (String)]

add_filter('bs_cache_control', function(string $cache_control) : string {
if (is_singular('example')) {
$cache_control = 'no-cache, no-store, max-age=0, must-revalidate';
}
return $cache_control;
});

Modify the CDN-Cache-Control value dynamically

Filter name: bs_cache_control_cdn — [1 Argument - $cdn_cache_control (String)]

add_filter('bs_cache_control_cdn', function(string $cdn_cache_control) : string {
if (is_singular('example')) {
$cdn_cache_control = 'no-cache, no-store, max-age=0, must-revalidate';
}
return $cdn_cache_control;
});

Add your own cache tags to a page

Filter name: bs_cache_response_cache_tags — [2 Arguments - $extra_cache_tags (Array), $cache_tags (Array)]

Adds extra cache tags to the page being served. $cache_tags holds the tags BigScoots Cache already added. Use only letters, numbers, _ and - in a tag.

add_filter('bs_cache_response_cache_tags', function(array $extra_cache_tags, array $cache_tags) : array {
if (is_page('pricing')) {
$extra_cache_tags[] = 'pricing_table';
}
return $extra_cache_tags;
}, 10, 2);

Query params ignored for cache tags

Filter name: bs_cache_ignored_query_params_for_cache_tags — [1 Argument - $params (Array)]

By default, pagination params and the ignored marketing query params don't change a page's cache tags. So /page/?utm_source=x is purged together with /page/. Add a param here if it should also be treated the same way.

add_filter('bs_cache_ignored_query_params_for_cache_tags', function(array $params) : array {
$params[] = 'my_tracking_id';
return $params;
});

XML / Feed cache filters

Feeds and other dynamic XML pages (like sitemaps) get their own, shorter cache values. Each of these filters takes 1 argument and works like its page-cache version above.

Filter name

What it changes

Default

bs_cache_xml_cdn_cache_ttl

CDN cache TTL (max-age in CDN-Cache-Control)

300 seconds

bs_cache_xml_browser_cache_ttl

Browser cache TTL (max-age in Cache-Control)

0 seconds

bs_cache_xml_stale_while_revalidate

stale-while-revalidate

60 seconds

bs_cache_xml_stale_if_error

stale-if-error

21600 seconds

bs_cache_xml_cache_control

The full Cache-Control value (String)

-

bs_cache_xml_cdn_cache_control

The full CDN-Cache-Control value (String)

-

// CDN cache TTL: cache feeds for 10 minutes at the CDN
add_filter('bs_cache_xml_cdn_cache_ttl', function(int $cdn_ttl) : int {
return 10 * MINUTE_IN_SECONDS;
});

// Browser cache TTL: let the browser cache feeds for 1 minute
add_filter('bs_cache_xml_browser_cache_ttl', function(int $browser_cache_ttl) : int {
return MINUTE_IN_SECONDS;
});

// Stale-while-revalidate: serve an expired feed for up to 2 minutes while a fresh copy is fetched
add_filter('bs_cache_xml_stale_while_revalidate', function(int $swr_ttl) : int {
return 2 * MINUTE_IN_SECONDS;
});

// Stale-if-error: serve an expired feed for up to 1 day while the server returns an error
add_filter('bs_cache_xml_stale_if_error', function(int $sie_ttl) : int {
return DAY_IN_SECONDS;
});

// Full Cache-Control value: never let the browser cache feeds
add_filter('bs_cache_xml_cache_control', function(string $cache_control) : string {
return 'no-cache, no-store, max-age=0, must-revalidate';
});

// Full CDN-Cache-Control value: set every CDN value yourself
add_filter('bs_cache_xml_cdn_cache_control', function(string $cdn_cache_control) : string {
return 'max-age=600, stale-while-revalidate=120, stale-if-error=86400';
});

The two full-value filters run last and replace the values built from the four TTL filters above them. Use one or the other, not both.

Include custom URL patterns to be treated as Feed

Filter name: bs_cache_dynamic_xml_url_patterns — [1 Argument - $url_patterns (Array)]

If a plugin generates custom feed URLs that WordPress doesn't recognize as feeds, add their URL patterns here so BigScoots Cache treats them as feeds.

add_filter('bs_cache_dynamic_xml_url_patterns', function(array $url_patterns) : array {
$url_patterns[] = '/some-feed/*';
$url_patterns[] = '/foo/bar/*';
return $url_patterns;
});

To decide in code instead of by URL, return true from bs_cache_is_dynamic_xml_request [1 Argument - $is_dynamic_xml (Bool)]

add_filter('bs_cache_is_dynamic_xml_request', function(bool $is_dynamic_xml) : bool {
return isset($_GET['my_feed']) ? true : $is_dynamic_xml;
});

Preload static files leveraging Early Hints

Filter name: bs_cache_early_hint_preloads — [1 Argument - $preloads (Array)]

BigScoots Cache has a native integration with the Perfmatters plugin: every item added as "Preload" or "Critical Image" in Perfmatters is preloaded using Early Hints.

If you don't use Perfmatters, use this filter to pass the critical static assets you want preloaded with Early Hints. Each item needs a url and an as value (image, font, script or style).

add_filter('bs_cache_early_hint_preloads', function(array $preloads) : array {
if (is_page('contact')) {
$preloads[] = [
'url' => 'https://example.com/wp-content/uploads/2021/01/contact.js',
'as' => 'script'
];
} elseif (is_page('portfolio')) {
$preloads[] = [
'url' => 'https://example.com/wp-content/uploads/2021/01/portfolio.css',
'as' => 'style'
];
}
return $preloads;
});

Turn off Speculation Rules on specific pages

Filter name: bs_cache_speculation_rules_enabled — [1 Argument - $enabled (Bool)]

add_filter('bs_cache_speculation_rules_enabled', function(bool $enabled) : bool {
return is_page('checkout-landing') ? false : $enabled;
});

Add URL patterns to the Speculation Rules exclude list

Filter name: bs_cache_speculation_href_exclude_paths — [1 Argument - $href_exclude_paths (Array)]

add_filter('bs_cache_speculation_href_exclude_paths', function(array $href_exclude_paths) : array {
$href_exclude_paths[] = '/account*'; // e.g. /account, /accounts, /account/some-page/
$href_exclude_paths[] = '/test-post/'; // e.g. /test-post/, /test-post/?foo=bar
$href_exclude_paths[] = '/*\\?*(^|&)(foo|loo|poo)=*'; // any URL with a foo=, loo= or poo= query param
return $href_exclude_paths;
});

Change Speculation Mode from Prerender (default) to Prefetch

Filter name: bs_cache_speculation_mode — [1 Argument - $mode (String)]

Only prerender and prefetch are accepted. Any other value falls back to prerender.

add_filter('bs_cache_speculation_mode', fn() => 'prefetch');

Modify the Speculation Rules before they are added

Filter name: bs_cache_speculation_rules — [1 Argument - $rules (Array)]

add_filter('bs_cache_speculation_rules', function(array $rules) : array {
// Modify the speculation rules as you see fit
return $rules;
});

Disable OPCache purge that happens via BigScoots Cache

Filter name: bs_cache_disable_clear_opcache

add_filter('bs_cache_disable_clear_opcache', '__return_true');

Disable Object Cache purge that happens via BigScoots Cache

Filter name: bs_cache_disable_clear_object_cache

add_filter('bs_cache_disable_clear_object_cache', '__return_true');

Stop purging WooCommerce products when only the stock quantity changes

Filter name: bs_cache_woo_purge_on_stock_quantity_change — [2 Arguments - $purge (Bool), $product_id (Int)]

By default, a product's cache is purged when its stock quantity changes (e.g. after an order). Return false to skip that purge. A product going in or out of stock is always purged.

// Skip for all products
add_filter('bs_cache_woo_purge_on_stock_quantity_change', '__return_false');

// Skip for certain products only
add_filter('bs_cache_woo_purge_on_stock_quantity_change', function(bool $purge, int $product_id) : bool {
return in_array($product_id, [123, 456], true) ? false : $purge;
}, 10, 2);

Polylang: let Polylang set its language cookie with a header

Filter name: bs_cache_polylang_cache_active — [1 Argument - $cache_active (Bool)]

BigScoots Cache tells Polylang that pages are cached, so Polylang sets its language cookie with JavaScript. A cookie header would stop the page from being cached. Return false only if you need Polylang's default behavior back.

add_filter('bs_cache_polylang_cache_active', '__return_false');

The Events Calendar: custom Calendar Embeds URL

Filter name: bs_cache_tec_calendar_embed_url_prefix — [1 Argument - $url_prefix (String), default home_url('/calendar-embed/')]

When an event is added, updated or deleted, BigScoots Cache purges The Events Calendar's embedded calendars under /calendar-embed/. If your site serves them from another path, set it here.

add_filter('bs_cache_tec_calendar_embed_url_prefix', fn() => home_url('/embedded-calendar/'));

Advanced tuning filters

Change these only if BigScoots Support asks you to. The defaults suit almost every site.

Filter name

What it controls

Default

bs_cache_purge_queue_max

Max posts purged in one batch; bigger queues are split into several batches

2000

bs_cache_cf_api_max_concurrency

Max purge requests sent to the CDN at the same time

10

bs_cache_asset_flush_echo_window

Seconds after any purge during which an asset-cache flush from another plugin (e.g. Autoptimize, Asset CleanUp) doesn't trigger another full page purge

60

bs_cache_woo_product_purge_throttle

Seconds before the same product is purged again for a stock quantity change

60

bs_cache_woo_product_update_purge_throttle

Seconds during which a product save that changed nothing is not purged again

600

bs_cache_woo_grouped_map_max_entries

Max grouped-product child/parent links tracked for purging

10000

bs_cache_edd_download_stats_purge_throttle

Seconds before an Easy Digital Downloads product is purged again for the same sales stats

600

bs_cache_edd_visible_settings

Easy Digital Downloads settings that purge the page cache when changed (currency, button text, taxes, etc.)

built-in list

bs_cache_divi_covered_actions

WordPress actions where Divi's "clear everything" signal is skipped because BigScoots Cache already purges what changed

built-in list

// Purge at most 500 posts per batch
add_filter('bs_cache_purge_queue_max', function(int $max_posts_per_batch) : int {
return 500;
});

// Send at most 5 purge requests to the CDN at the same time
add_filter('bs_cache_cf_api_max_concurrency', function(int $max_concurrency) : int {
return 5;
});

// Skip asset-cache flushes from other plugins for 2 minutes after a purge
add_filter('bs_cache_asset_flush_echo_window', function(int $seconds) : int {
return 2 * MINUTE_IN_SECONDS;
});

// Purge a product again for a stock quantity change only after 5 minutes
add_filter('bs_cache_woo_product_purge_throttle', function(int $seconds) : int {
return 5 * MINUTE_IN_SECONDS;
});

// Skip purging a product save that changed nothing for 30 minutes
add_filter('bs_cache_woo_product_update_purge_throttle', function(int $seconds) : int {
return 30 * MINUTE_IN_SECONDS;
});

// Track up to 20,000 grouped-product child/parent links
add_filter('bs_cache_woo_grouped_map_max_entries', function(int $max_entries) : int {
return 20000;
});

// Purge an EDD product again for the same sales stats only after 30 minutes
add_filter('bs_cache_edd_download_stats_purge_throttle', function(int $seconds) : int {
return 30 * MINUTE_IN_SECONDS;
});

// Also purge the page cache when an EDD add-on setting changes
add_filter('bs_cache_edd_visible_settings', function(array $settings) : array {
$settings[] = 'my_addon_price_label';
return $settings;
});

// Skip Divi's "clear everything" signal on one more action
add_filter('bs_cache_divi_covered_actions', function(array $actions) : array {
$actions[] = 'my_plugin_after_import';
return $actions;
});

Modifying the plugin behaviors with Actions

Actions run before or after a certain operation. Here are the actions provided by this plugin.

Fired after the whole cache is purged (purge everything)

Action name: bs_cache_purge_all

Fires after everything for the website (pages and static files) has been purged.

add_action('bs_cache_purge_all', function() : void {
// BigScoots Cache has purged everything. Run your custom code here.
});

Fired after the entire page cache is purged (HTML only)

Action name: bs_cache_purge_all_page_cache — [1 Argument: $html_cache_tag (String)]

Fires after every HTML page has been purged. Static files are not touched.

add_action('bs_cache_purge_all_page_cache', function(string $html_cache_tag) : void {
// All pages were purged. Run your custom code here.
});

Fired after caches for specific URLs are purged

Action name: bs_cache_purge_urls — [3 Arguments: $urls (Array), $exact_urls (Array), $cache_tags (Array)]

$urls are purged as prefixes (the URL and everything under it), `$exact_urls` are purged as exact matches (query string included), and `$cache_tags` are the cache tags purged.

add_action('bs_cache_purge_urls', function(array $urls, array $exact_urls, array $cache_tags) : void {
// The cache for these URLs and tags has been purged. Run your custom code here.
}, 10, 3);

Fired after the cache for specific users is purged

Action name: bs_cache_purge_users — [1 Argument: $user_ids (Array)]

Boost plan with cache for logged-in users only.

add_action('bs_cache_purge_users', function(array $user_ids) : void {
// The cache for these users has been purged. Run your custom code here.
});

Fired after the Object Cache is flushed

Action name: bs_cache_object_cache_flushed

add_action('bs_cache_object_cache_flushed', function() : void {
// The object cache was flushed. Run your custom code here.
});

Fired before and after the whole cache is purged (purge everything)

Action names: bs_cache_purge_whole_cache_before and bs_cache_purge_whole_cache_after

Fires right before and right after the request that purges everything for the website (pages and static files).

add_action('bs_cache_purge_whole_cache_before', function() : void {
// About to purge everything.
});

add_action('bs_cache_purge_whole_cache_after', function() : void {
// Everything has been purged.
});

Fired before and after the cache for specific URLs is purged

Action names: bs_cache_purge_cache_by_urls_before and bs_cache_purge_cache_by_urls_after — [3 Arguments: $urls (Array), $exact_urls (Array), $cache_tags (Array)]

Fires right before and right after the request that purges a list of URLs and cache tags.

add_action('bs_cache_purge_cache_by_urls_before', function(array $urls, array $exact_urls, array $cache_tags) : void {
// About to purge these URLs and tags.
}, 10, 3);

add_action('bs_cache_purge_cache_by_urls_after', function(array $urls, array $exact_urls, array $cache_tags) : void {
// These URLs and tags have been purged.
}, 10, 3);

Fired before and after the cache for specific users is purged

Action names: bs_cache_purge_cache_by_users_before and bs_cache_purge_cache_by_users_after — [1 Argument: $user_ids (Array)]

Boost plan with cache for logged-in users only.

add_action('bs_cache_purge_cache_by_users_before', function(array $user_ids) : void {
// About to purge the cache for these users.
});

add_action('bs_cache_purge_cache_by_users_after', function(array $user_ids) : void {
// The cache for these users has been purged.
});

Purging the OPCache programmatically

The server OPCache can be purged programmatically with the following code:

if (class_exists('BigScoots_Cache') && method_exists('BigScoots_Cache', 'clear_opcache')) {
\BigScoots_Cache::clear_opcache();
}

Purging the Object Cache programmatically

The Object Cache can be purged programmatically with the following code:

if (class_exists('BigScoots_Cache') && method_exists('BigScoots_Cache', 'clear_object_cache')) {
\BigScoots_Cache::clear_object_cache();
}

Purging the cache programmatically

You can purge BigScoots Cache from your theme's functions.php, and third-party plugins can use the same code to purge BigScoots Cache when they need to. It supports:

  • Purge everything for the entire domain (pages and static files)

  • Purge the entire page cache (HTML only)

  • Purge cache for a specific Post ID, with or without its related pages (home page, taxonomy, category, author and other archive pages)

  • Purge cache for a list of Post IDs (an integer array), with or without their related pages

  • Purge cache for a list of URLs

  • Purge cache for a list of exact URLs, including their query string

  • Purge cache for a list of User IDs (an integer array) — Boost plan with cache for logged-in users only

Every call returns an array like ['success' => true, 'message' => 'Purged entire domain cache.'], so you can check the result if you need to.

if (class_exists('BigScoots_Cache') && method_exists('BigScoots_Cache', 'clear_cache')) {
// Use only the line you need. Each one below is a separate purge.

// Purge everything for the entire domain (pages and static files)
\BigScoots_Cache::clear_cache('purge_everything');

// Purge the entire page cache (HTML only)
\BigScoots_Cache::clear_cache('purge_page_cache');

// Purge a specific Post ID, but not its related pages
\BigScoots_Cache::clear_cache(85);

// Purge a specific Post ID and its related pages
\BigScoots_Cache::clear_cache(85, true);

// Purge a list of Post IDs, but not their related pages
\BigScoots_Cache::clear_cache([85, 96, 102]);

// Purge a list of Post IDs and their related pages
\BigScoots_Cache::clear_cache([85, 96, 102], true);

// Purge a list of URLs (each URL and everything under it)
\BigScoots_Cache::clear_cache(['https://example.com/test/', 'https://example.com/category/uncategorized/']);

// Purge the exact URL only, query string included, instead of everything under it
\BigScoots_Cache::clear_cache(['https://example.com/foo/?license=abc1234'], false, false, true);

// Purge the page cache for specific users (by user ID)
\BigScoots_Cache::clear_cache([1045, 2541, 3002, 1526], false, true);
}
Did this answer your question?