diff --git a/assets/js/sophia-chat.js b/assets/js/sophia-chat.js index a58bb01..a4689c3 100644 --- a/assets/js/sophia-chat.js +++ b/assets/js/sophia-chat.js @@ -16,6 +16,8 @@ return; } + var fallbackUrl = button.getAttribute('data-fallback-url') || chatUrl; + function openChat() { var popup = window.open( chatUrl, @@ -23,9 +25,9 @@ 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',scrollbars=yes,resizable=yes' ); - // Fallback: if popup blocked, navigate directly + // Fallback: if popup blocked, navigate to fallback URL (or chat URL if not set) if (!popup || popup.closed) { - window.location.href = chatUrl; + window.location.href = fallbackUrl; } } diff --git a/sophia-chat.php b/sophia-chat.php index f08b858..12e13fc 100644 --- a/sophia-chat.php +++ b/sophia-chat.php @@ -123,10 +123,12 @@ function sophia_chat_add_widget() { $chat_url = sophia_chat_get_chat_url(); $icon_url = sophia_chat_get_icon_url(); + $fallback_url = get_option('sophia_chat_fallback_url', ''); ?> @@ -286,6 +288,7 @@ function sophia_chat_register_settings() { register_setting('sophia_chat_options', 'sophia_chat_visibility', 'sanitize_text_field'); register_setting('sophia_chat_options', 'sophia_chat_page_ids', 'sanitize_text_field'); register_setting('sophia_chat_options', 'sophia_chat_exclude_ids', 'sanitize_text_field'); + register_setting('sophia_chat_options', 'sophia_chat_fallback_url', 'esc_url_raw'); } add_action('admin_init', 'sophia_chat_register_settings'); @@ -400,6 +403,22 @@ class="regular-text" + + + + + + + + +

+ +