init_hooks();
}
/**
* Initialize hooks
*/
private function init_hooks() {
// Only activate for Safari browsers
if ($this->is_safari_browser()) {
add_action('wp_head', [$this, 'add_script_blocking_code'], 1);
add_action('wp_footer', [$this, 'add_script_monitoring'], 999);
add_filter('script_loader_src', [$this, 'filter_problematic_scripts'], 10, 2);
}
}
/**
* Check if current request is from Safari
*
* @return bool
*/
private function is_safari_browser() {
if (!isset($_SERVER['HTTP_USER_AGENT'])) {
return false;
}
$user_agent = $_SERVER['HTTP_USER_AGENT'];
return (strpos($user_agent, 'Safari') !== false &&
strpos($user_agent, 'Chrome') === false &&
strpos($user_agent, 'Chromium') === false);
}
/**
* Add script blocking code in head
*/
public function add_script_blocking_code() {
?>
blocked_scripts as $pattern) {
if (strpos(strtolower($src), $pattern) !== false) {
error_log('[SAFARI-BLOCKER] Blocked script: ' . $src);
return false; // Don't load this script
}
}
return $src;
}
/**
* Add script monitoring in footer
*/
public function add_script_monitoring() {
?>