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() { ?>