one-click-accessibility/modules/widget/components/cache-compatibility.php
Raz Ohad 660d9701ad
New: Added compatibility with popular cache plugins [App-1213] (#222)
* New: added compatibility with popular cache plugins

* fixed intent

* phpcs

* removed unused hooks
2025-03-11 12:04:19 +02:00

86 lines
1.9 KiB
PHP

<?php
namespace EA11y\Modules\Widget\Components;
use EA11y\Modules\Widget\Module;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Class Cache_Compatibility
*/
class Cache_Compatibility {
/**
* remove_protocol_from_widget_url
* @param $url
*
* @return string
*/
public static function remove_protocol_from_widget_url( $url ): string {
return str_replace( [ 'http://', 'https://' ], '', $url );
}
/**
* exclude_widget_script_array
* @param $scripts
*
* @return mixed
*/
public function exclude_widget_script_array( $scripts ) {
$scripts[] = self::remove_protocol_from_widget_url( Module::get_widget_url() );
return $scripts;
}
/**
* exclude_widget_script_comma_seperated
* @param $scripts
*
* @return string
*/
public function exclude_widget_script_comma_seperated( $scripts ): string {
$scripts .= ',' . self::remove_protocol_from_widget_url( Module::get_widget_url() );
return $scripts;
}
/**
* w3tc_minify_js_do_tag_minification
* @param $do_tag_minification
* @param $script_tag
* @param $file
*
* @return false|mixed
*/
public function w3tc_minify_js_do_tag_minification( $do_tag_minification, $script_tag, $file ) {
if ( false !== strpos( $file, 'a11y/widget.js' ) ) {
return false;
}
return $do_tag_minification;
}
/**
* sg_cache_exclude_js
* @param $excluded_js
*
* @return mixed
*/
public function exclude_widget_script_handle_array( $excluded_js ) {
if( ! is_array( $excluded_js ) ) {
return $excluded_js;
}
$excluded_js[] = 'ea11y-widget';
return $excluded_js;
}
public function __construct() {
// WP Rocket
add_filter( 'rocket_exclude_js', [ $this, 'exclude_widget_script_array' ] );
add_filter( 'rocket_minify_excluded_external_js', [ $this, 'exclude_widget_script_array' ] );
// LiteSpeed Cache
add_filter( 'litespeed_optimize_js_excludes', [ $this, 'exclude_widget_script_array' ] );
}
}