litespeed_cache();
$this->w3_total_cache();
$this->wp_fastest_cache();
$this->wp_optimize();
$this->wp_rocket();
$this->wp_super_cache();
}
/**
* Show a notice in the WordPress Administration interface if
* Litespeed Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*/
public function litespeed_cache() {
// Bail if the Litespeed Cache plugin is not active.
if ( ! is_plugin_active( 'litespeed-cache/litespeed-cache.php' ) ) {
return;
}
// Bail if caching isn't enabled in the Litespeed Plugin.
$config = new \LiteSpeed\Base();
if ( ! $config->conf( \LiteSpeed\Base::O_CACHE ) ) {
return;
}
// If the exclusion rule exists, no need to modify anything.
if ( in_array( $this->key, $config->conf( \LiteSpeed\Base::O_CACHE_EXC_COOKIES ), true ) ) {
return;
}
// Litespeed Cache is active, with page caching enabled, but has not been configured to disable
// caching when the ck_subscriber_id cookie is present.
// Show a notice in the WordPress Administration, as we can't directly write to the
// Litespeed Cache configuration files.
WP_ConvertKit()->get_class( 'admin_notices' )->add( 'litespeed_cache' );
// Define the output of the persistent notice.
add_filter( 'convertkit_admin_notices_output_litespeed_cache', array( $this, 'litespeed_cache_notice' ) );
}
/**
* Define the notice text to display in the WordPress Administration interface
* when Litespeed Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*
* @param string $notice Notice text.
* @return string Notice text
*/
public function litespeed_cache_notice( $notice ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
return sprintf(
'%s %s %s %s',
esc_html__( 'Kit: Member Content: Please add', 'convertkit' ),
'ck_subscriber_id',
sprintf(
'%s',
esc_url(
admin_url(
add_query_arg(
array(
'page' => 'litespeed-cache#excludes',
),
'admin.php'
)
)
),
esc_html__( 'to Litespeed Cache\'s "Do Not Cache Cookies" setting by clicking here.', 'convertkit' )
),
esc_html__( 'Failing to do so will result in errors.', 'convertkit' )
);
}
/**
* Show a notice in the WordPress Administration interface if
* W3 Total Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*/
public function w3_total_cache() {
// Bail if the W3 Total Cache plugin is not active.
if ( ! is_plugin_active( 'w3-total-cache/w3-total-cache.php' ) ) {
return;
}
// Bail if caching isn't enabled in the W3 Total Cache Plugin.
$config = new \W3TC\Config();
if ( ! $config->get_boolean( 'pgcache.enabled' ) ) {
return;
}
// If the exclusion rule exists, no need to modify anything.
if ( in_array( $this->key, $config->get_array( 'pgcache.reject.cookie' ), true ) ) {
return;
}
// W3 Total Cache is active, with page caching enabled, but has not been configured to disable
// caching when the ck_subscriber_id cookie is present.
// Show a notice in the WordPress Administration, as we can't directly write to the W3
// Total Cache configuration files.
WP_ConvertKit()->get_class( 'admin_notices' )->add( 'w3_total_cache' );
// Define the output of the persistent notice.
add_filter( 'convertkit_admin_notices_output_w3_total_cache', array( $this, 'w3_total_cache_notice' ) );
}
/**
* Define the notice text to display in the WordPress Administration interface
* when W3 Total Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*
* @param string $notice Notice text.
* @return string Notice text
*/
public function w3_total_cache_notice( $notice ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
return sprintf(
'%s %s %s %s',
esc_html__( 'Kit: Member Content: Please add', 'convertkit' ),
'ck_subscriber_id',
sprintf(
'%s',
esc_url(
admin_url(
add_query_arg(
array(
'page' => 'w3tc_pgcache#pgcache_reject_cookie',
),
'admin.php'
)
)
),
esc_html__( 'to W3 Total Cache\'s "Rejected Cookies" setting by clicking here.', 'convertkit' )
),
esc_html__( 'Failing to do so will result in errors.', 'convertkit' )
);
}
/**
* Add a rule to WP Fastest Cache to prevent caching when
* the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*/
public function wp_fastest_cache() {
// Bail if the WP Fastest Cache plugin is not active.
if ( ! is_plugin_active( 'wp-fastest-cache/wpFastestCache.php' ) ) {
return;
}
// Fetch exclusion rules.
$exclusion_rules = get_option( 'WpFastestCacheExclude' );
// If the exclusion exists, no need to modify anything.
if ( strpos( $exclusion_rules, $this->key ) !== false ) {
return;
}
// Define the rule.
$rule = array(
'prefix' => 'contain',
'content' => $this->key,
'type' => 'cookie',
);
// If no rules exist, add the rule.
if ( ! $exclusion_rules ) {
return update_option( 'WpFastestCacheExclude', wp_json_encode( array( $rule ) ) );
}
// Append the rule to the existing ruleset.
$exclusion_rules = json_decode( $exclusion_rules );
$exclusion_rules[] = $rule;
return update_option( 'WpFastestCacheExclude', wp_json_encode( $exclusion_rules ) );
}
/**
* Add a rule to WP-Optimize to prevent caching when
* the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*/
public function wp_optimize() {
// Bail if the WP Fastest Cache plugin is not active.
if ( ! is_plugin_active( 'wp-optimize/wp-optimize.php' ) ) {
return;
}
// Sanity check that we can access WP-Optimize's configuration class.
if ( ! class_exists( 'WPO_Cache_Config' ) ) {
return;
}
// Fetch settings.
$config = new WPO_Cache_Config();
$settings = $config->get();
// Check the exception cookies array key exists in the settings.
if ( ! array_key_exists( 'cache_exception_cookies', $settings ) ) {
$settings['cache_exception_cookies'] = array();
}
// If the cookie exception exists, no need to modify anything.
if ( in_array( $this->key, $config->get_option( 'cache_exception_cookies' ), true ) !== false ) {
return;
}
// Add cookie to exceptions.
$settings['cache_exception_cookies'][] = $this->key;
// Update configuration to include excluding caching for the ck_subscriber_id cookie.
return $config->update( $settings );
}
/**
* Add a rule to WP Rocket to prevent caching when
* the ck_subscriber_id cookie is present.
*
* @since 2.7.0
*/
public function wp_rocket() {
// Bail if the WP Rocket plugin is not active.
if ( ! is_plugin_active( 'wp-rocket/wp-rocket.php' ) ) {
return;
}
// Sanity check that we can access WP-Optimize's configuration class.
if ( ! function_exists( 'update_rocket_option' ) ) {
return;
}
// Fetch settings.
$settings = get_rocket_option( 'cache_reject_cookies', array() );
// If the cookie exception exists, no need to modify anything.
if ( in_array( $this->key, $settings, true ) ) {
return;
}
// Add cookie to exceptions.
$settings[] = $this->key;
// Update configuration to include excluding caching for the ck_subscriber_id cookie.
update_rocket_option( 'cache_reject_cookies', $settings );
}
/**
* Show a notice in the WordPress Administration interface if
* WP Super Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*/
public function wp_super_cache() {
// Bail if the WP Super Cache plugin is not active.
if ( ! is_plugin_active( 'wp-super-cache/wp-cache.php' ) ) {
return;
}
// Bail if caching isn't enabled in the WP Super Cache Plugin.
global $cache_enabled;
if ( ! $cache_enabled ) {
return;
}
// If the exclusion rule exists, no need to modify anything.
global $wpsc_rejected_cookies;
if ( is_array( $wpsc_rejected_cookies ) && in_array( $this->key, $wpsc_rejected_cookies, true ) ) {
return;
}
// WP Super Cache is active, with caching enabled, but has not been configured to disable
// caching when the ck_subscriber_id cookie is present.
// Show a notice in the WordPress Administration, as we can't directly write to the WP
// Super Cache configuration files.
WP_ConvertKit()->get_class( 'admin_notices' )->add( 'wp_super_cache' );
// Define the output of the persistent notice.
add_filter( 'convertkit_admin_notices_output_wp_super_cache', array( $this, 'wp_super_cache_notice' ) );
}
/**
* Define the notice text to display in the WordPress Administration interface
* when WP Super Cache is active, its caching enabled and no rule to disable caching
* exists when the ck_subscriber_id cookie is present.
*
* @since 2.2.2
*
* @param string $notice Notice text.
* @return string Notice text
*/
public function wp_super_cache_notice( $notice ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
return sprintf(
'%s %s %s %s',
esc_html__( 'Kit: Member Content: Please add', 'convertkit' ),
'ck_subscriber_id',
sprintf(
'%s',
esc_url(
admin_url(
add_query_arg(
array(
'page' => 'wpsupercache',
'tab' => 'settings#rejectcookies',
),
'options-general.php'
)
)
),
esc_html__( 'to WP Super Cache\'s "Rejected Cookies" setting by clicking here.', 'convertkit' )
),
esc_html__( 'Failing to do so will result in errors.', 'convertkit' )
);
}
}