diff --git a/includes/Admin/AppearanceController.php b/includes/Admin/AppearanceController.php index 87a56b0..7c89ab2 100644 --- a/includes/Admin/AppearanceController.php +++ b/includes/Admin/AppearanceController.php @@ -82,6 +82,12 @@ class AppearanceController { $general_data = [ 'spa_mode' => sanitize_text_field($request->get_param('spaMode')), + 'spa_pages' => [ + 'shop' => absint($request->get_param('spaPages')['shop'] ?? 0), + 'cart' => absint($request->get_param('spaPages')['cart'] ?? 0), + 'checkout' => absint($request->get_param('spaPages')['checkout'] ?? 0), + 'account' => absint($request->get_param('spaPages')['account'] ?? 0), + ], 'toast_position' => sanitize_text_field($request->get_param('toastPosition') ?? 'top-right'), 'typography' => [ 'mode' => sanitize_text_field($request->get_param('typography')['mode'] ?? 'predefined'), @@ -378,6 +384,12 @@ class AppearanceController { return [ 'general' => [ 'spa_mode' => 'full', + 'spa_pages' => [ + 'shop' => 0, + 'cart' => 0, + 'checkout' => 0, + 'account' => 0, + ], 'toast_position' => 'top-right', 'typography' => [ 'mode' => 'predefined', diff --git a/includes/Frontend/Assets.php b/includes/Frontend/Assets.php index 232613d..73cadaa 100644 --- a/includes/Frontend/Assets.php +++ b/includes/Frontend/Assets.php @@ -254,6 +254,12 @@ class Assets { error_log('[WooNooW Customer] should_load_assets check - Post ID: ' . ($post ? $post->ID : 'none')); + // First check: Is this a designated SPA page? + if (self::is_spa_page()) { + error_log('[WooNooW Customer] Designated SPA page detected - loading assets'); + return true; + } + // Get Customer SPA settings $spa_settings = get_option('woonoow_customer_spa_settings', []); $mode = isset($spa_settings['mode']) ? $spa_settings['mode'] : 'disabled'; @@ -356,6 +362,31 @@ class Assets { return false; } + /** + * Check if current page is a designated SPA page + */ + private static function is_spa_page() { + global $post; + if (!$post) { + return false; + } + + // Get SPA page IDs from appearance settings + $appearance_settings = get_option('woonoow_appearance_settings', []); + $spa_pages = isset($appearance_settings['general']['spa_pages']) ? $appearance_settings['general']['spa_pages'] : []; + + // Check if current page matches any SPA page + $current_page_id = $post->ID; + + foreach ($spa_pages as $page_type => $page_id) { + if ($page_id && $current_page_id == $page_id) { + return true; + } + } + + return false; + } + /** * Dequeue conflicting scripts when SPA is active */ diff --git a/includes/Frontend/TemplateOverride.php b/includes/Frontend/TemplateOverride.php index 0f2c0f7..2733302 100644 --- a/includes/Frontend/TemplateOverride.php +++ b/includes/Frontend/TemplateOverride.php @@ -68,10 +68,19 @@ class TemplateOverride { * Use SPA template (blank page) */ public static function use_spa_template($template) { + // Check if current page is a designated SPA page + if (self::is_spa_page()) { + $spa_template = plugin_dir_path(dirname(dirname(__FILE__))) . 'templates/spa-full-page.php'; + if (file_exists($spa_template)) { + return $spa_template; + } + } + + // Legacy: Check SPA mode settings $settings = get_option('woonoow_customer_spa_settings', []); $mode = isset($settings['mode']) ? $settings['mode'] : 'disabled'; - // Mode 1: Disabled - but still check for shortcodes + // Mode 1: Disabled - but still check for shortcodes (legacy) if ($mode === 'disabled') { // Check if page has woonoow shortcodes global $post; @@ -261,10 +270,40 @@ class TemplateOverride { } } + /** + * Check if current page is a designated SPA page + */ + private static function is_spa_page() { + global $post; + if (!$post) { + return false; + } + + // Get SPA page IDs from appearance settings + $appearance_settings = get_option('woonoow_appearance_settings', []); + $spa_pages = isset($appearance_settings['general']['spa_pages']) ? $appearance_settings['general']['spa_pages'] : []; + + // Check if current page matches any SPA page + $current_page_id = $post->ID; + + foreach ($spa_pages as $page_type => $page_id) { + if ($page_id && $current_page_id == $page_id) { + return true; + } + } + + return false; + } + /** * Check if we should remove theme header/footer */ private static function should_remove_theme_elements() { + // Remove for designated SPA pages + if (self::is_spa_page()) { + return true; + } + $settings = get_option('woonoow_customer_spa_settings', []); $mode = isset($settings['mode']) ? $settings['mode'] : 'disabled';