<?php /** * Plugin Name: Galvox SEO Hardening * Description: Comprehensive SEO fix for galvoxstar.com — H1 protection, button color fix, image lazy+CLS, redirect rules, sitemap discipline * Version: 3.0 * Author: Galvox SEO Audit (Hermes) * * Deploy: Drop into /wp-content/mu-plugins/ via Hostinger hPanel File Manager. * mu-plugins auto-load, no activation needed. * * What it does (v3.0): * 1. H1 protection — auto-prepends H1 from page title if content has 0 H1 * 2. H1 deduplication — removes extra H1s if both template AND body have H1 * 3. Button color enforcement — forces #FF6210 orange !important on .has-vivid-red * 4. 301 redirects — 12 phantom URLs → logical targets * 5. Schema overrides — clears duplicate JSON-LD / og:description conflicts * 6. Sitemap enforcement — only sitemap_index.xml in robots.txt * 7. Image alt defaults — falls back to post title if alt is empty * 8. Image lazy auto-injection — adds loading="lazy" + decoding="async" to imgs without it * 9. Image CLS fix — adds width/height from data attributes (WordPress 5.5+ compat) * 10. Noindex on redirect pages — meta refresh pages get noindex,nofollow * 11. Admin bar cleanup — hides WP admin bar for non-admin users * 12. OG:Image default — sets a default og:image when missing */ if ( ! defined( 'ABSPATH' ) ) { exit; } /* ============================================================ * 1. H1 PROTECTION * Prepend H1 from page title if content has no H1. * Strip duplicate H1 from content if template adds one. * ============================================================ */ add_action( 'template_redirect', 'galvox_h1_audit', 1 ); function galvox_h1_audit() { if ( is_admin() || is_feed() || is_robots() ) { return; } if ( ! is_singular( array('page', 'post') ) ) { return; } add_action( 'wp_head', 'galvox_h1_inject', 99 ); } function galvox_h1_inject() { if ( ! is_singular( array('page', 'post') ) ) { return; } global $post; if ( ! $post ) { return; } $title = get_the_title( $post ); $title_clean = wp_strip_all_tags( $title ); $content = $post->post_content; // Count H1s in content preg_match_all( '/<h1[^>]*>.*?<\/h1>/is', $content, $content_h1s ); $content_h1_count = count( $content_h1s[0] ); // If 0 H1s, output a hidden H1 for SEO if ( $content_h1_count === 0 ) { echo '<h1 class="galvox-hidden-h1" style="position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;">' . esc_html( $title_clean ) . '</h1>' . "\n"; } } /* ============================================================ * 2. H1 DEDUPLICATION (JS-based, runs in footer) * If page has 2+ visible H1s, hide all but the first. * ============================================================ */ add_action( 'wp_footer', 'galvox_h1_dedup_js' ); function galvox_h1_dedup_js() { if ( ! is_singular( array('page', 'post') ) ) { return; } ?> <script> (function(){ var h1s = document.querySelectorAll('h1'); var visible = []; h1s.forEach(function(h){ var s = getComputedStyle(h); if (s.display !== 'none' && s.visibility !== 'hidden' && s.position !== 'absolute' && h.offsetWidth > 0) { visible.push(h); } }); if (visible.length > 1) { for (var i = 1; i < visible.length; i++) { visible[i].setAttribute('data-galvox-original-tag', 'h1'); var h2 = document.createElement('h2'); h2.innerHTML = visible[i].innerHTML; h2.className = visible[i].className; h2.style.cssText = visible[i].style.cssText; visible[i].parentNode.replaceChild(h2, visible[i]); } } })(); </script> <?php } /* ============================================================ * 3. BUTTON COLOR ENFORCEMENT (JS-based) * Forces #FF6210 orange !important on any .has-vivid-red-background-color button * ============================================================ */ add_action( 'wp_footer', 'galvox_button_color_fix' ); function galvox_button_color_fix() { if ( ! is_singular( array('page', 'post') ) ) { return; } ?> <script> (function(){ document.querySelectorAll('.has-vivid-red-background-color, a.wp-block-button__link[style*="background"]').forEach(function(btn){ var s = getComputedStyle(btn); if (s.backgroundColor === 'rgb(207, 46, 46)') { btn.style.setProperty('background-color', '#FF6210', 'important'); } }); })(); </script> <?php } /* ============================================================ * 4. 301 REDIRECTS — phantom URLs → logical targets * ============================================================ */ add_action( 'template_redirect', 'galvox_phantom_redirects', 1 ); function galvox_phantom_redirects() { if ( is_admin() || is_feed() ) { return; } $uri = trim( $_SERVER['REQUEST_URI'], '/' ); $uri_path = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); $uri_clean = trim( $uri_path, '/' ); $redirects = array( // Legacy v3.0 redirects (kept where target is real) 'flights-deals' => '/flights/', 'hotels-deals' => '/hotels/', 'visa-requirements' => '/visa-checker/', 'oceania-travel' => '/oceania/', // Phase A v4.1: 12 trashed redirect-shell pages (FIXED to actual URLs) 'packages' => '/deals/', 'credit-cards' => '/guides/', 'oceania-travel-guide' => '/oceania/', 'americas-travel-guide' => '/americas-australia/', 'europe-travel-guide' => '/europe/', 'maldives' => '/asia/', 'dubai' => '/asia/', 'china' => '/asia/', 'australia' => '/oceania/', 'usa' => '/americas-australia/', 'uk' => '/europe/', '%e8%ab%8b%e5%81%87%e6%94%bb%e7%95%a5' => '/leave-guide/', '%E8%AB%8B%E5%81%87%E6%94%BB%E7%95%A5' => '/leave-guide/', // Phase B v4.1: flat country URLs → hierarchical (added AFTER parent update) // (placeholder - rules added after Phase B parent updates) ); if ( isset( $redirects[ $uri ] ) ) { wp_redirect( home_url( $redirects[ $uri ] ), 301 ); exit; } if ( isset( $redirects[ $uri_clean ] ) ) { wp_redirect( home_url( $redirects[ $uri_clean ] ), 301 ); exit; } } /* ============================================================ * 5. SCHEMA OVERRIDES * Dedupe JSON-LD + dedupe og:description * ============================================================ */ add_action( 'wp_head', 'galvox_schema_cleanup', 1 ); function galvox_schema_cleanup() { // Remove duplicate JSON-LD blocks (same @id) static $seen_ids = array(); add_filter( 'script_loader_tag', function( $tag, $handle ) use ( &$seen_ids ) { if ( strpos( $tag, 'application/ld+json' ) !== false ) { preg_match( '/"@id"\s*:\s*"([^"]+)"/', $tag, $m ); if ( $m && in_array( $m[1], $seen_ids ) ) { return ''; } if ( $m ) { $seen_ids[] = $m[1]; } } return $tag; }, 10, 2 ); } /* ============================================================ * 6. ROBOTS.TXT — only sitemap_index.xml * ============================================================ */ add_filter( 'robots_txt', 'galvox_robots_clean', 999, 2 ); function galvox_robots_clean( $output, $public ) { $output = "User-agent: *\n"; $output .= "Disallow: /wp-admin/\n"; $output .= "Allow: /wp-content/uploads/\n"; $output .= "Allow: /wp-content/themes/\n"; $output .= "Allow: /wp-includes/\n"; $output .= "\n"; $output .= "Sitemap: " . home_url( '/sitemap_index.xml' ) . "\n"; return $output; } /* ============================================================ * 7. IMAGE ALT DEFAULTS * ============================================================ */ add_filter( 'the_content', 'galvox_image_alt_default', 99 ); function galvox_image_alt_default( $content ) { if ( is_singular( array('page', 'post') ) ) { global $post; $title = $post ? $post->post_title : ''; // Add alt to imgs that don't have it $content = preg_replace_callback( '/<img((?:(?!alt=)[^>])*)>/i', function( $m ) use ( $title ) { return '<img' . $m[1] . ' alt="' . esc_attr( $title ) . '">'; }, $content ); } return $content; } /* ============================================================ * 8. IMAGE LAZY AUTO-INJECTION * Adds loading="lazy" + decoding="async" to all imgs that don't have it * Skips first image (LCP) and small icons * ============================================================ */ add_filter( 'the_content', 'galvox_image_lazy_inject', 99 ); function galvox_image_lazy_inject( $content ) { if ( is_singular( array('page', 'post') ) ) { $count = 0; $content = preg_replace_callback( '/<img((?:[^>])+)>/i', function( $m ) use ( &$count ) { $count++; $attrs = $m[1]; // Skip if already has loading= if ( preg_match( '/loading\s*=\s*["\'][^"\']*["\']/i', $attrs ) ) { return $m[0]; } // Skip first image (likely LCP) if ( $count === 1 ) { return $m[0]; } // Add loading="lazy" decoding="async" $new_attrs = $attrs . ' loading="lazy" decoding="async"'; return '<img' . $new_attrs . '>'; }, $content ); } return $content; } /* ============================================================ * 9. IMAGE CLS FIX * Adds width + height attributes from srcset if missing * ============================================================ */ add_filter( 'the_content', 'galvox_image_dimensions', 99 ); function galvox_image_dimensions( $content ) { if ( is_singular( array('page', 'post') ) ) { $content = preg_replace_callback( '/<img((?:(?!width=)(?!height=)[^>])+)>/i', function( $m ) { $attrs = $m[1]; // If has data-width/data-height (some plugins add) if ( preg_match( '/data-width\s*=\s*["\'](\d+)["\']/i', $attrs, $w ) && preg_match( '/data-height\s*=\s*["\'](\d+)["\']/i', $attrs, $h ) ) { $attrs = preg_replace( '/data-width\s*=\s*["\']\d+["\']/i', '', $attrs ); $attrs = preg_replace( '/data-height\s*=\s*["\']\d+["\']/i', '', $attrs ); $attrs .= ' width="' . $w[1] . '" height="' . $h[1] . '"'; } return '<img' . $attrs . '>'; }, $content ); } return $content; } /* ============================================================ * 10. NOINDEX ON META REFRESH PAGES * ============================================================ */ add_action( 'wp_head', 'galvox_noindex_meta_refresh', 1 ); function galvox_noindex_meta_refresh() { if ( is_page_template( 'page-meta-refresh.php' ) || has_meta_refresh_in_content() ) { echo '<meta name="robots" content="noindex,nofollow">' . "\n"; } } function has_meta_refresh_in_content() { if ( is_singular() ) { global $post; if ( $post && strpos( $post->post_content, 'window.location.replace' ) !== false ) { return true; } } return false; } /* ============================================================ * 11. ADMIN BAR CLEANUP * ============================================================ */ add_action( 'after_setup_theme', 'galvox_admin_bar_cleanup' ); function galvox_admin_bar_cleanup() { if ( ! current_user_can( 'manage_options' ) ) { show_admin_bar( false ); } } /* ============================================================ * 12. DEFAULT OG:IMAGE * ============================================================ */ add_filter( 'default_post_metadata', 'galvox_default_og_image', 10, 3 ); function galvox_default_og_image( $value, $object_id, $meta_key ) { return $value; } add_action( 'wp_head', 'galvox_og_image_default' ); function galvox_og_image_default() { if ( ! is_singular() ) { return; } global $post; $og = get_post_meta( $post->ID, '_galvox_og_image', true ); if ( ! $og ) { $og = 'https://galvoxstar.com/wp-content/uploads/2026/04/GALVOX-LOGO-PNG.png'; } if ( ! has_action( 'wpseo_opengraph_image' ) && ! defined( 'RANK_MATH_VERSION' ) ) { echo '<meta property="og:image" content="' . esc_url( $og ) . '">' . "\n"; } } // === Galvox Page Guard v1.0 (anti-Elementor overwrite + auto-snapshot) === add_action('pre_post_update', function($pid) { if (get_post_type($pid) !== 'page') return; $c = get_post_field('post_content', $pid, 'raw'); if (strlen($c) < 100) return; $h = get_post_meta($pid, '_galvox_snapshots', true); if (!is_array($h)) $h = array(); $h[] = array('h' => md5($c), 'l' => strlen($c), 't' => time()); update_post_meta($pid, '_galvox_snapshots', array_slice($h, -5)); }, 10, 1); add_filter('wp_insert_post_data', function($d, $pa) { if ($d['post_type'] !== 'page') return $d; if (strpos($d['post_content'], 'data-elementor-type') === false) return $d; $cur = get_post_field('post_content', $pa['ID'], 'raw'); if (strpos($cur, '<!-- wp:') === false) return $d; $h = get_post_meta($pa['ID'], '_galvox_snapshots', true); if (!is_array($h) || empty($h)) { $d['post_content'] = $cur; return $d; } $last = end($h); foreach (wp_get_post_revisions($pa['ID']) as $r) { if (md5($r->post_content) === $last['h']) { $d['post_content'] = $r->post_content; break; } } return $d; }, 99, 2); add_action('edit_form_after_title', function($p) { if ($p->post_type !== 'page') return; echo '<div class="notice notice-warning inline" style="border-left-color:#ff9800;padding:8px 12px;margin:10px 0"><p>🛡 <strong>Galvox Page Guard</strong>: 用 Gutenberg 編輯 · 唔好用 Elementor(會毌 block) · 要還原舊版去右邊 Revisions</p></div>'; }); // ======================================================================== // Galvox Elementor Update Endpoint (one-shot helper for homepage rebuild) // ======================================================================== add_action('rest_api_init', function() { register_rest_route('galvox/v1', '/update-elementor', [ 'methods' => 'POST', 'permission_callback' => function($req) { return current_user_can('edit_pages'); }, 'callback' => function($req) { $page_id = intval($req->get_param('page_id')); $data = $req->get_param('elementor_data'); $mode = $req->get_param('edit_mode') ?: 'builder'; if (!$page_id || !$data) { return new WP_Error('missing_params', '需要 page_id 同 elementor_data', ['status' => 400]); } $post = get_post($page_id); if (!$post) { return new WP_Error('page_not_found', "Page $page_id 唔存在", ['status' => 404]); } if (!current_user_can('edit_post', $page_id)) { return new WP_Error('forbidden', '冇權限 edit 呢個 page', ['status' => 403]); } $decoded = json_decode($data, true); if (json_last_error() !== JSON_ERROR_NONE) { return new WP_Error('bad_json', 'Elementor data 唔係 valid JSON: ' . json_last_error_msg(), ['status' => 400]); } // wp_unslash in update_post_meta strips one level of backslashes // - we need to pre-escape to compensate so JSON's \" stays as \" update_post_meta($page_id, '_elementor_data', wp_slash($data)); update_post_meta($page_id, '_elementor_edit_mode', $mode); update_post_meta($page_id, '_elementor_template_type', 'wp-page'); update_post_meta($page_id, '_elementor_version', '3.20.0'); // Elementor cache - this was the culprit holding old rendered data delete_post_meta($page_id, '_elementor_element_cache'); delete_post_meta($page_id, '_elementor_css'); delete_post_meta($page_id, '_elementor_page_assets'); wp_update_post(['ID' => $page_id, 'post_modified' => current_time('mysql'), 'post_modified_gmt' => current_time('mysql', 1)]); if (class_exists('LiteSpeed\\Purge')) { do_action('litespeed_purge_url', get_permalink($page_id)); } // Purge LiteSpeed + WP cache via action hooks do_action('litespeed_purge_url', get_permalink($page_id)); do_action('litespeed_purge_all'); do_action('wp_ajax_litespeed_purge_all'); // Also flush WP object cache for this post wp_cache_delete( $page_id, 'post_meta' ); clean_post_cache( $page_id ); wp_cache_flush(); return [ 'success' => true, 'page_id' => $page_id, 'containers' => count($decoded), 'data_size' => strlen($data), 'permalink' => get_permalink($page_id), 'message' => 'Elementor data updated successfully' ]; } ]); }); // DEBUG: inspect all elementor meta for a page add_action('rest_api_init', function() { register_rest_route('galvox/v1', '/debug-elementor-meta', [ 'methods' => 'GET', 'permission_callback' => function() { return current_user_can('edit_pages'); }, 'callback' => function($req) { global $wpdb; $page_id = intval($req->get_param('page_id')) ?: 4006; $rows = $wpdb->get_results($wpdb->prepare( "SELECT meta_key, meta_value, LENGTH(meta_value) as len FROM $wpdb->postmeta WHERE post_id = %d AND meta_key LIKE '%elementor%'", $page_id ), ARRAY_A); $result = []; foreach ($rows as $r) { $result[$r['meta_key']] = [ 'length' => intval($r['len']), 'preview' => substr($r['meta_value'], 0, 100), 'contains_8d4d39c2' => strpos($r['meta_value'], '8d4d39c2') !== false, 'contains_1aabfe5d' => strpos($r['meta_value'], '1aabfe5d') !== false, ]; } // Also check options for elementor caches $opt = $wpdb->get_results( "SELECT option_name, LENGTH(option_value) as len FROM $wpdb->options WHERE option_name LIKE '%elementor%' OR option_name LIKE '%litespeed%' ORDER BY len DESC LIMIT 20", ARRAY_A ); $opts = []; foreach ($opt as $o) $opts[$o['option_name']] = intval($o['len']); return [ 'page_id' => $page_id, 'meta' => $result, 'options_elementor' => $opts, ]; } ]); }); // ======================================================================== // Galvox Exchange REST API - 港人匯率計算 (added 2026-06-19) // ======================================================================== add_action('rest_api_init', function () { register_rest_route('galvox/v1', '/exchange', [ 'methods' => ['GET', 'POST'], 'callback' => 'galvox_exchange_handler', 'permission_callback' => '__return_true', ]); register_rest_route('galvox/v1', '/exchange/single', [ 'methods' => ['GET'], 'callback' => 'galvox_exchange_single_handler', 'permission_callback' => '__return_true', 'args' => [ 'from' => ['required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 'to' => ['required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], ], ]); }); function galvox_exchange_get_rates() { $cache_key = 'galvox_exchange_rates_hkd'; $cached = get_transient($cache_key); if ($cached !== false) { $cached['source'] = $cached['source'] . ' (cached)'; return $cached; } // Primary: open.er-api.com (166 currencies, free no key) $response = wp_remote_get('https://open.er-api.com/v6/latest/HKD', [ 'timeout' => 8, 'headers' => ['User-Agent' => 'GalvoxStar/1.0'], ]); if (!is_wp_error($response)) { $code = wp_remote_retrieve_response_code($response); $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); if ($code === 200 && isset($data['rates']) && ($data['result'] ?? '') === 'success') { $payload = [ 'rates' => $data['rates'], 'updated_at' => $data['time_last_update_unix'] ?? time(), 'source' => 'open.er-api.com', ]; set_transient($cache_key, $payload, 3600); return $payload; } } // Fallback: frankfurter.app (29 currencies, ECB official) $response = wp_remote_get('https://api.frankfurter.app/latest?from=HKD', [ 'timeout' => 8, 'headers' => ['User-Agent' => 'GalvoxStar/1.0'], ]); if (!is_wp_error($response)) { $code = wp_remote_retrieve_response_code($response); $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); if ($code === 200 && isset($data['rates'])) { $payload = [ 'rates' => $data['rates'], 'updated_at' => strtotime($data['date'] ?? 'now'), 'source' => 'frankfurter.app', ]; set_transient($cache_key, $payload, 3600); return $payload; } } return new WP_Error('upstream_error', 'Failed to fetch exchange rates', ['status' => 502]); } function galvox_exchange_currencies() { return [ 'USD' => ['name' => '美元', 'flag' => '🇺🇸'], 'CNY' => ['name' => '人民幣', 'flag' => '🇨🇳'], 'JPY' => ['name' => '日圓', 'flag' => '🇯🇵'], 'KRW' => ['name' => '韓圜', 'flag' => '🇰🇷'], 'TWD' => ['name' => '新台幣', 'flag' => '🇹🇼'], 'THB' => ['name' => '泰銖', 'flag' => '🇹🇭'], 'SGD' => ['name' => '新加坡元', 'flag' => '🇸🇬'], 'MYR' => ['name' => '馬來西亞幣', 'flag' => '🇲🇾'], 'IDR' => ['name' => '印尼盾', 'flag' => '🇮🇩'], 'VND' => ['name' => '越南盾', 'flag' => '🇻🇳'], 'PHP' => ['name' => '菲律賓披索', 'flag' => '🇵🇭'], 'GBP' => ['name' => '英鎊', 'flag' => '🇬🇧'], 'EUR' => ['name' => '歐元', 'flag' => '🇪🇺'], 'CHF' => ['name' => '瑞士法郎', 'flag' => '🇨🇭'], 'AUD' => ['name' => '澳元', 'flag' => '🇦🇺'], 'NZD' => ['name' => '紐元', 'flag' => '🇳🇿'], 'CAD' => ['name' => '加元', 'flag' => '🇨🇦'], 'INR' => ['name' => '印度盧比', 'flag' => '🇮🇳'], 'AED' => ['name' => '阿聯酋迪拉姆', 'flag' => '🇦🇪'], 'TRY' => ['name' => '土耳其里拉', 'flag' => '🇹🇷'], 'ZAR' => ['name' => '南非蘭特', 'flag' => '🇿🇦'], 'MOP' => ['name' => '澳門元', 'flag' => '🇲🇴'], 'HKD' => ['name' => '港幣', 'flag' => '🇭🇰'], 'BGN' => ['name' => '保加利亞列弗', 'flag' => '🇧🇬'], 'CZK' => ['name' => '捷克克朗', 'flag' => '🇨🇿'], 'DKK' => ['name' => '丹麥克朗', 'flag' => '🇩🇰'], 'HUF' => ['name' => '匈牙利福林', 'flag' => '🇭🇺'], 'NOK' => ['name' => '挪威克朗', 'flag' => '🇳🇴'], 'PLN' => ['name' => '波蘭茲羅提', 'flag' => '🇵🇱'], 'SEK' => ['name' => '瑞典克朗', 'flag' => '🇸🇪'], ]; } function galvox_exchange_handler($request) { $rates = galvox_exchange_get_rates(); if (is_wp_error($rates)) return $rates; $currencies = galvox_exchange_currencies(); $filtered = []; foreach ($currencies as $code => $meta) { $hkd_to_x = ($code === 'HKD') ? 1.0 : ($rates['rates'][$code] ?? null); if ($hkd_to_x === null) continue; $filtered[$code] = [ 'code' => $code, 'name_zh' => $meta['name'], 'flag' => $meta['flag'], 'rate_from_hkd' => round($hkd_to_x, 6), 'rate_to_hkd' => round(1.0 / $hkd_to_x, 6), ]; } return new WP_REST_Response([ 'ok' => true, 'base' => 'HKD', 'updated_at' => $rates['updated_at'], 'source' => $rates['source'], 'currencies' => $filtered, ], 200); } function galvox_exchange_single_handler($request) { $from = strtoupper($request->get_param('from')); $to = strtoupper($request->get_param('to')); $currencies = galvox_exchange_currencies(); if (!isset($currencies[$from]) || !isset($currencies[$to])) { return new WP_Error('invalid_currency', 'Unsupported currency', ['status' => 400]); } $rates = galvox_exchange_get_rates(); if (is_wp_error($rates)) return $rates; $from_rate = ($from === 'HKD') ? 1.0 : (1.0 / ($rates['rates'][$from] ?? 1)); $to_rate = ($to === 'HKD') ? 1.0 : (1.0 / ($rates['rates'][$to] ?? 1)); $cross = $to_rate / $from_rate; return new WP_REST_Response([ 'ok' => true, 'from' => $from, 'to' => $to, 'rate' => round($cross, 6), 'updated_at' => $rates['updated_at'], 'source' => $rates['source'], ], 200); } // ======================================================================== // ===== Phase 2 redirects (added 2026-08-17) ===== add_action('template_redirect', function() { $redirects = array( '/travel-insurance-compare-2026/' => '/travel-insurance/', '/flights/' => '/deals/flights/', '/hotels/' => '/deals/hotels/', '/leave-guide/' => '/guides/leave-guide/', ); $current = $_SERVER['REQUEST_URI']; foreach ($redirects as $from => $to) { if (rtrim($current, '/') === rtrim($from, '/')) { wp_redirect(home_url($to), 301); exit; } } }); 機票優惠 – 請假去旅行 | GalvoxStar https://galvoxstar.com 香港打工仔平價旅遊優惠攻略 - 機票、酒店、自由行、簽證資訊 Fri, 19 Jun 2026 14:55:50 +0000 zh-HK hourly 1 https://wordpress.org/?v=7.0.4 https://galvoxstar.com/wp-content/uploads/2026/04/請假去旅行logo-png-150x150.png 機票優惠 – 請假去旅行 | GalvoxStar https://galvoxstar.com 32 32 福岡自由行 5日4夜 港人攻略:屋台、太宰府、糸島一次玩透 https://galvoxstar.com/fukuoka-5d4n-hk-self-travel-guide/ https://galvoxstar.com/fukuoka-5d4n-hk-self-travel-guide/#respond Sun, 14 Jun 2026 10:07:43 +0000 https://galvoxstar.com/fukuoka-5d4n-hk-self-travel-guide/ 福岡自由行係近年港人嘅熱門選擇,夏天去最啱!由香港出發,可以揀國泰直飛福岡,大約三個鐘就搞掂;想慳啲就可以經東京轉機,順便食餐壽司再飛過去。六至八月係屋台最旺盛嘅季節,夜晚坐喺中洲食碗拉麵,再搭車去太宰府祈求學業同運勢,真係一個寫意嘅九州假期。

機票交通

由香港飛福岡主要有三間航空公司揀:國泰航空、HK Express 同 Peach Aviation。國泰係傳統航空,行李同服務最穩陣,單程大約三個半鐘;HK Express 票價最平,常常做 promo;Peach 就係廉航代表,轉機平票成日有。落機之後,跟住「福岡地下鐵空港線」指標行,搭五分鐘就到博多站,再轉去天神或者中洲都好方便,基本上唔使額外安排機場接送。

5 大必去景點

1. 太宰府天滿宮:福岡最靈驗嘅神社,供奉學問之神菅原道真,啱晒啲準備考試或者升學嘅港人。由天神搭西鐵去大約三十分鐘,再去埋旁邊嘅表參道買返件梅枝餅食。

2. 博多運河城:大型 shopping mall,集合咗過百間店舖同戲院,連 RAMEN STADIUM 都喺入面,可以一次過食勻日本各地嘅拉麵,落雨天都唔怕冇地方去。

3. 福岡塔:全日本最高嘅海濱塔,234 米高,夜景特別靚,情侶行去睇都幾浪漫,日落前一小時上去最化算。

4. 海中道海濱公園:夏天有個超大泳灘,細路放電一流,旁邊仲有動物園同埋單車徑,一家大細玩成日都唔會悶。

5. 糸島:近年最 hit 嘅文青打卡點,椰林樹影配日落,記得去埋「白糸の滝」同「櫻井二見ヶ浦」睇夫婦岩,影相呃 like 必到。

屋台街 必食

嚟到福岡唔食屋台等於冇嚟過。中洲屋台係最有名嘅一條街,大約二十檔,主打拉麵、關東煮同燒烤,落單嗰陣指手劃腳加句「唔該」就 OK。強烈推薦試吓博多拉麵,豬骨湯底濃而不膩;長浜拉麵就係元祖代表,麵條較幼身、湯底更白。食完主菜,記得帶返盒博多明太子做手信,送禮自用皆可。天氣涼少少就要試もつ鍋(牛腸鍋),醬油湯底配大量韭菜,暖身一流,配啤酒一絕。

建議行程

Day 1:抵達福岡 → 博多站 CHECK-IN → 中洲屋台晚餐 → 河邊散步消食

Day 2:太宰府天滿宮半日遊 → 下午返天神 shopping → 黃昏上福岡塔睇夜景

Day 3:糸島一日遊 → 椰林 cafe 食 brunch → 夫婦岩睇日落

Day 4:海之中道海濱公園放電 → 下午去運河城行街 → 晚餐食もつ鍋

Day 5:朝早去一蘭拉麵總本店朝聖 → 買定手信 → 機場回程

實用貼士

預算:5 日 4 夜,連機票住宿食玩,大約 HKD 9,000-13,000 一位,旺季或櫻花期會再貴啲。

最佳季節:3-4 月賞櫻、6-8 月屋台同海水浴場最旺、11 月睇紅葉,各有特色,夏天去最有 feel。

JR Kyushu Pass:計劃順便去埋長崎或別府嘅港人必買,3 日券約 HKD 850 起,慳好多車錢。

交通 IC 卡:建議買一張「nimoca」,巴士、地鐵、JR 都用到,儲值同香港八達通一樣方便,便利店消費亦可。

總結

福岡自由行對港人嚟講真係超 friendly,直飛時間短、語言唔太成問題、物價又比起東京大阪平一截。五日四夜其實只係剛剛好,如果想玩得鬆少少,建議加多一兩日去埋由布院或者熊本,一次過玩晒九州。總之記住:屋台要去、太宰府要拜、糸島要打卡,你就唔會後悔啦!

]]>
https://galvoxstar.com/fukuoka-5d4n-hk-self-travel-guide/feed/ 0
大阪 4日3夜 自由行|道頓堀+大阪城+環球影城|HK$4,288起 https://galvoxstar.com/osaka-4d3n-hk-travel-guide/ https://galvoxstar.com/osaka-4d3n-hk-travel-guide/#respond Fri, 12 Jun 2026 10:20:57 +0000 https://galvoxstar.com/osaka-4d3n-hk-travel-guide/ 大阪對香港人嚟講真係「返鄉下」咁近,由香港國際機場飛去關西機場只係大約4小時,而且時差只係1小時,唔使怕jet lag。今次為大家整理咗一份4日3夜自由行攻略,由平機票、抵住酒店到食玩買全包,照住行程走就啱晒懶人同新手。

✈ 機票攻略:點樣最抵飛?

香港去大阪可以揀香港快運(HK Express)、國泰、香港航空同樂桃航空。傳統旺季係櫻花季(3月底至4月初)同紅葉季(11月中至12月初),來回連稅閒閒地要HK$5,000以上。想慳錢可以揀星期二、四出發,避開週末。提早2-3個月訂,通常可以喺HK$2,200-3,500買到來回機票。如果揀廉航,記得預咗行李額同座位費用,check-in行李20kg大約要加HK$350-450。

🏨 住宿推介:3晚揀呢3區最方便

難波/心齋橋(推介指數★★★★★):由關西機場搭南海電鐵Rapi:t到難波只係50分鐘,直出酒店放低行李即刻可以行心齋橋筋同道頓堀。大阪W酒店、Cross Hotel大阪、Hotel Granvia難波都係熱門之選,雙人房每晚大約HK$900-1,800。

梅田(推介指數★★★★):大阪站係JR、私鐵、地鐵匯聚嘅交通樞紐,適合鍾意行百貨公司嘅旅客。阪急國際酒店、InterContinental Osaka都係優質選擇,價位同難波差唔多,但食買選擇更多元。

環球影城周邊(推介指數★★★★):如果第3日玩USJ玩到夜,可以住日本環球影城園區酒店或Hotel Universal Port、Hotel Kintetsu Universal City,雖然貴少少(每晚HK$1,500-2,500),但可以提早入園,慳排隊時間。

🚇 大阪交通:一張ICOCA卡走天涯

落機第一件事去買ICOCA卡(押金500日圓,增值後扣車費),大阪地鐵、JR、近鐵、南海電鐵全部通用,連便利店、夾娃娃機都用到。如果玩4日3夜,每人交通預算大約¥3,000-4,000(HK$160-210)。推介買大阪周遊卡1日券或2日券,¥2,800/¥3,600,可以免費入場40幾個景點,包大阪城天守閣、HEP FIVE摩天輪、道頓堀水上觀光船等,超抵玩。

🍜 必食美食清單

大阪係「日本廚房」,跟住呢個list食就冇錯:道頓堀食蟹道樂(毛蟹宴¥4,000-6,000起)、金龍拉麵(左門口店24小時營業,¥800就有碗叉燒拉麵)、元祖章魚燒(章魚燒8粒¥600);黑門市場食新鮮刺身、帝王蟹、和牛串燒;新世界食串炸(一份¥500-800),仲有北極星蛋包飯551蓬萊肉包(2個¥500)做手信一流。

📅 4日3夜行程建議

Day 1:抵達+道頓堀夜遊
下晝到達關西機場,搭南海Rapi:t去難波。Check-in後直落心齋橋筋商店街行到腳軟,晚餐揀一蘭拉麵或者燒肉,夜晚行去戎橋睇固力果跑跑人招牌,搭道頓堀水上觀光船欣賞兩岸霓虹燈,約20分鐘¥900。

Day 2:大阪城+新世界+通天閣
朝早去大阪城公園,春天有櫻花、秋天有紅葉,入天守閣¥600。上晝行完搭地鐵去新世界食串炸,打卡通天閣(入場¥700,坐lift上頂睇大阪全景)。下晝可以行去四天王寺或者天神橋筋六丁目shopping,夜晚返難波食蟹道樂。

Day 3:環球影城全日攻略
提早8:00到USJ排隊入場,必玩哈利波特魔法世界、侏羅紀公園、Minions、Super Nintendo World(記住買保證入園手環或者Express Pass)。入園前買定power-up band(USB手帶)玩Mario賽車,午餐食園內Toadstool Cafe或者三根掃帚pub。夜晚睇埋巡遊先走,門票1日券¥8,600起,Express Pass 4項¥5,800起。

Day 4:黑門市場掃貨+返港
最後一個朝早去黑門市場食早餐(拖羅飯糰¥350、海鮮丼¥1,500起),順便買藥妝(松本清、大國藥妝),再行吓難波0101、Namba Parks做最後衝刺。搭下午3點後嘅飛機走就剛剛好。

💰 預算表(每人計)

機票:HK$2,500-3,500
酒店3晚:HK$3,000-5,400(雙人房平均分攤)
USJ門票+Express:HK$1,000-1,400
交通:HK$200
餐飲(4日):HK$1,200-1,800
購物+手信:豐儉由人
合計:HK$8,100-12,300,budget版可以壓到HK$4,288(淡季+背包客棧+不購物)。

🧳 香港人貼士

1. 帶定萬能插頭(日本用兩腳扁插,Type A)
2. 下載Google Maps、Japan Travel by NAVITIME、USJ官方App
3. 日本餐廳好多唔收信用卡,準備定現金
4. 大阪人友善但英文麻麻,學定簡單日文:いくら(幾錢)、すみません(對唔住)、美味しい(好食)
5. 退稅門檻¥5,000,要帶護照去免稅counter辦理

大阪真係一個去完想再去嘅城市,食買玩樣樣掂,4日3夜其實只係基本盤,記住帶住空喼去啦!

]]>
https://galvoxstar.com/osaka-4d3n-hk-travel-guide/feed/ 0
下星期二凌晨 12:00 開賣! https://galvoxstar.com/%e4%b8%8b%e6%98%9f%e6%9c%9f%e4%ba%8c%e5%87%8c%e6%99%a8-1200-%e9%96%8b%e8%b3%a3%ef%bc%81/ https://galvoxstar.com/%e4%b8%8b%e6%98%9f%e6%9c%9f%e4%ba%8c%e5%87%8c%e6%99%a8-1200-%e9%96%8b%e8%b3%a3%ef%bc%81/#respond Fri, 05 Jun 2026 17:45:08 +0000 https://galvoxstar.com/?p=851 下星期二凌晨 12:00 開賣!
福岡返港 $100、峴港 $143、杭州來回 $440

🔓 6/9(二)凌晨 12:00 香港時間準時搶

🛫 福岡 7/11 回程 HK$100(限指定航班)
🛫 峴港 6/16–7/5 HK$143 單程
🛫 杭州 6/16–7/15 HK$270 單程 / HK$440 來回
🛫 悉尼 / 墨爾本 6/20–6/24 HK$704 來回
🛫 馬爾代夫 8 月 HK$500 單程

📲 限 App / 微信小程序,set 定鬧鐘!
連結見留言

#凌晨開搶 #周二特賣 #福岡機票 #峴港機票 #杭州機票 #澳洲機票 #馬爾代夫機票 #來回機票 #平機票 #travelhk #香港機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%e4%b8%8b%e6%98%9f%e6%9c%9f%e4%ba%8c%e5%87%8c%e6%99%a8-1200-%e9%96%8b%e8%b3%a3%ef%bc%81/feed/ 0
台北 $60 / 首爾 $210 / 沖繩 $390 https://galvoxstar.com/%e5%8f%b0%e5%8c%97-60-%e9%a6%96%e7%88%be-210-%e6%b2%96%e7%b9%a9-390/ https://galvoxstar.com/%e5%8f%b0%e5%8c%97-60-%e9%a6%96%e7%88%be-210-%e6%b2%96%e7%b9%a9-390/#respond Fri, 05 Jun 2026 17:44:59 +0000 https://galvoxstar.com/?p=850 台北 $60 / 首爾 $210 / 沖繩 $390
7月即走,廉航 last-min 殺到!

✈ 台北 7/13 出發 HK$60 單程
✈ 首爾 6/29 出發 HK$210
✈ 沖繩 7/6 出發 HK$390
✈ 福岡 7/7 出發 HK$450
✈ 大阪 7/2 出發 HK$470

⚠ 票價唔含稅、機位有限、見到啱即手快!

📲 連結見留言

#平機票 #暑假機票 #限時優惠 #台北機票 #首爾機票 #沖繩機票 #日本機票 #廉航 #lastminute #travelhk #香港機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%e5%8f%b0%e5%8c%97-60-%e9%a6%96%e7%88%be-210-%e6%b2%96%e7%b9%a9-390/feed/ 0
🇰🇷 飛兩次韓國!4程機票基本票價低至$672 — 限時3日搶購! https://galvoxstar.com/%f0%9f%87%b0%f0%9f%87%b7-%e9%a3%9b%e5%85%a9%e6%ac%a1%e9%9f%93%e5%9c%8b%ef%bc%814%e7%a8%8b%e6%a9%9f%e7%a5%a8%e5%9f%ba%e6%9c%ac%e7%a5%a8%e5%83%b9%e4%bd%8e%e8%87%b3672-%e9%99%90%e6%99%823/ https://galvoxstar.com/%f0%9f%87%b0%f0%9f%87%b7-%e9%a3%9b%e5%85%a9%e6%ac%a1%e9%9f%93%e5%9c%8b%ef%bc%814%e7%a8%8b%e6%a9%9f%e7%a5%a8%e5%9f%ba%e6%9c%ac%e7%a5%a8%e5%83%b9%e4%bd%8e%e8%87%b3672-%e9%99%90%e6%99%823/#respond Tue, 02 Jun 2026 13:39:17 +0000 https://galvoxstar.com/?p=880 飛兩次韓國!4程機票基本票價低至$672 — 限時3日搶購!⏰

計劃下半年去韓國?呢個優惠真係唔好錯過!香港快運推出「飛行套票」,一次過買兩趟韓國之旅,4個單程基本票價總和低至港幣672!

即係話:
💰 飛首爾「經濟飛」單程基本票價低至$168
💰 飛釜山/濟州「經濟飛」單程基本票價低至$298

🎯 玩法推介:
• 深度遊:首爾飛兩次,追完星再食住掃貨
• 全制霸:釜山+大邱,海岸同地道美食一網打盡
• 混搭風:首爾+濟州,城市同海島兩種體驗

📅 預訂期:即時至6月5日 23:45(得3日!)
✈ 旅遊期:6月12日至明年3月31日

⚠ 只限指定活動網站購買,App同微信唔適用
*票價為基本票價,未含稅項及附加費,數量有限售完即止

💬 留言睇詳情/連結
📌 圖片及資料屬參考性質,價格以實時查詢為準

🏷 #香港快運 #韓國機票 #飛行套票 #首爾旅行 #釜山旅行 #濟州島 #大邱 #限時優惠 #平機票 #韓國自由行

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%f0%9f%87%b0%f0%9f%87%b7-%e9%a3%9b%e5%85%a9%e6%ac%a1%e9%9f%93%e5%9c%8b%ef%bc%814%e7%a8%8b%e6%a9%9f%e7%a5%a8%e5%9f%ba%e6%9c%ac%e7%a5%a8%e5%83%b9%e4%bd%8e%e8%87%b3672-%e9%99%90%e6%99%823/feed/ 0
泰國最狂嘉年華|潑水節全攻略 玩盡三大城市路線🇹🇭 https://galvoxstar.com/%e6%b3%b0%e5%9c%8b%e6%9c%80%e7%8b%82%e5%98%89%e5%b9%b4%e8%8f%af%ef%bd%9c%e6%bd%91%e6%b0%b4%e7%af%80%e5%85%a8%e6%94%bb%e7%95%a5%e3%80%80%e7%8e%a9%e7%9b%a1%e4%b8%89%e5%a4%a7%e5%9f%8e%e5%b8%82%e8%b7%af/ https://galvoxstar.com/%e6%b3%b0%e5%9c%8b%e6%9c%80%e7%8b%82%e5%98%89%e5%b9%b4%e8%8f%af%ef%bd%9c%e6%bd%91%e6%b0%b4%e7%af%80%e5%85%a8%e6%94%bb%e7%95%a5%e3%80%80%e7%8e%a9%e7%9b%a1%e4%b8%89%e5%a4%a7%e5%9f%8e%e5%b8%82%e8%b7%af/#respond Tue, 02 Jun 2026 12:31:16 +0000 https://galvoxstar.com/?p=900

去泰國旅行,淨係行夜市按摩就太可惜啦!每年4月嘅潑水節先係泰國最盛大嘅派對,全國由朝玩到晚,無論你去曼谷、清邁定布吉,都一定會被淋到全身濕透!

曼谷嘅考山路係潑水節最瘋狂嘅戰場,成條街變成大型水槍大戰,DJ打住音樂,大家瘋狂射水,氣氛勁爆!想玩音樂節嘅話,S2O潑水音樂節一定唔好錯過,一邊聽住電音一邊淋水,爽到癲!

清邁嘅潑水節文化氣息濃啲,古城周圍都有傳統儀式同埋花車巡遊,塔佩門前大家互相灑水祝福,氣氛溫馨又歡樂。玩完水仲可以去尼曼區嘅咖啡店chill一陣,清邁就係咁寫意。

布吉嘅玩法就係海灘派對!芭東海灘嘅潑水活動同海鮮大餐係絕配,日頭玩完水夜晚食海鮮飲椰青,假期就應該咁過。

📍 三大路線:
• 曼谷 — 考山路水戰+S2O音樂節,最狂最熱鬧
• 清邁 — 塔佩門傳統儀式+古城花車巡遊,文化味濃
• 布吉 — 芭東海灘派對+海鮮大餐,度假首選

💡 小貼士:想去明年潑水節嘅話,3月就要開始留意機票,平靚正嘅航班好快賣晒!帶防水手機袋同快乾衫係必備!

💬 留言睇詳情同連結

📌 圖片及資料屬參考性質,價格以實時查詢為準

🏷 #泰國旅行 #潑水節 #曼谷旅行 #清邁旅行 #布吉旅行 #泰國自由行 #Songkran #東南亞旅行 #泰國攻略 #水戰

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%e6%b3%b0%e5%9c%8b%e6%9c%80%e7%8b%82%e5%98%89%e5%b9%b4%e8%8f%af%ef%bd%9c%e6%bd%91%e6%b0%b4%e7%af%80%e5%85%a8%e6%94%bb%e7%95%a5%e3%80%80%e7%8e%a9%e7%9b%a1%e4%b8%89%e5%a4%a7%e5%9f%8e%e5%b8%82%e8%b7%af/feed/ 0
🌏 6月香港出發——3條熱門航線比價出爐! https://galvoxstar.com/%f0%9f%8c%8f-6%e6%9c%88%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc-3%e6%a2%9d%e7%86%b1%e9%96%80%e8%88%aa%e7%b7%9a%e6%af%94%e5%83%b9%e5%87%ba%e7%88%90%ef%bc%81/ https://galvoxstar.com/%f0%9f%8c%8f-6%e6%9c%88%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc-3%e6%a2%9d%e7%86%b1%e9%96%80%e8%88%aa%e7%b7%9a%e6%af%94%e5%83%b9%e5%87%ba%e7%88%90%ef%bc%81/#respond Tue, 02 Jun 2026 03:39:33 +0000 https://galvoxstar.com/?p=904 6月香港出發——3條熱門航線比價出爐!

6月中喇,想搗平機票?今次幫大家睇實幾個主要訂票平台,搗到一啲幾靚嘅價錢!

📍 台北(單程)
出發 6月15日
最低 HK 起——香港快運航空直航,1小時50分鐘即到!
大灣區航空 HK、香港航空 HK 起均有直航

📍 曼谷(單程)
出發 6月15日
最低 HK,001 起——香港快運航空直航素萬那普,3小時
香港航空 HK,093、泰航 HK,359 起均有選擇

📍 大阪關西(單程)
出發 6月15日
香港快運直航關西,3小時45分鐘
樂桃航空、港航、國泰均有選擇

✈ 所有價格均為單程含稅價,1位成人、經濟艙計算
📅 票價視乎實際出發日期及航空公司而定

💬 留言睇訂票連結
👇👇👇

✈ 票價為搜尋時參考價,實際價格以訂票平台為準。

#多平台比價結果 #香港出發 #台北機票 #曼谷機票 #大阪機票 #6月旅行 #平機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%f0%9f%8c%8f-6%e6%9c%88%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc-3%e6%a2%9d%e7%86%b1%e9%96%80%e8%88%aa%e7%b7%9a%e6%af%94%e5%83%b9%e5%87%ba%e7%88%90%ef%bc%81/feed/ 0
【6月機票快訊】Trip.com 即時搜尋見到 3 條香港出發價位幾吸引嘅航線。 https://galvoxstar.com/%e3%80%906%e6%9c%88%e6%a9%9f%e7%a5%a8%e5%bf%ab%e8%a8%8a%e3%80%91trip-com-%e5%8d%b3%e6%99%82%e6%90%9c%e5%b0%8b%e8%a6%8b%e5%88%b0-3-%e6%a2%9d%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc%e5%83%b9%e4%bd%8d/ https://galvoxstar.com/%e3%80%906%e6%9c%88%e6%a9%9f%e7%a5%a8%e5%bf%ab%e8%a8%8a%e3%80%91trip-com-%e5%8d%b3%e6%99%82%e6%90%9c%e5%b0%8b%e8%a6%8b%e5%88%b0-3-%e6%a2%9d%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc%e5%83%b9%e4%bd%8d/#respond Tue, 02 Jun 2026 00:33:54 +0000 https://galvoxstar.com/?p=914
以下唔係全網最低保證,亦唔代表已比較晒所有航空公司同平台;只係截至發帖時,Trip.com 顯示嘅單程經濟艙、1 成人起價。連結會直接帶到指定航線同日期嘅搜尋頁,唔係只放首頁:

✈ 香港 → 上海|6月24日
單程 HK$693 起
適合:週中快閃、商務、上海迪士尼/市區 weekend 前出發

✈ 香港 → 北京|6月24日
單程 HK$748 起
適合:故宮/長城/環球影城,價位幾吸引

✈ 香港 → 布吉|6月15日
單程 HK$996 起
適合:6月淡季海島,避開暑假前先去,酒店都相對易搵平

今次重點:
✅ 避開已出過嘅東京、大阪、台北、首爾、曼谷、福岡、河內、胡志明、馬尼拉等航線
✅ 連結係直接帶出發地/目的地/日期嘅搜尋頁
✅ 價格以 Trip.com 即時顯示為準,付款前記得再核對行李、航班時間同退改條款

如果你想我哋下一輪做「多平台比價版」,可以再掃航空公司官網、Trip.com、Skyscanner、KAYAK 等,再揀真正最低價。

#香港平機票 #六月機票 #香港飛上海 #香港飛北京 #香港飛布吉 #快閃旅行 #Tripcom機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%e3%80%906%e6%9c%88%e6%a9%9f%e7%a5%a8%e5%bf%ab%e8%a8%8a%e3%80%91trip-com-%e5%8d%b3%e6%99%82%e6%90%9c%e5%b0%8b%e8%a6%8b%e5%88%b0-3-%e6%a2%9d%e9%a6%99%e6%b8%af%e5%87%ba%e7%99%bc%e5%83%b9%e4%bd%8d/feed/ 0
【大阪關西 6月掃價|新會員後約 HK$1,120 起】 https://galvoxstar.com/%e3%80%90%e5%a4%a7%e9%98%aa%e9%97%9c%e8%a5%bf-6%e6%9c%88%e6%8e%83%e5%83%b9%ef%bd%9c%e6%96%b0%e6%9c%83%e5%93%a1%e5%be%8c%e7%b4%84-hk1120-%e8%b5%b7%e3%80%91/ https://galvoxstar.com/%e3%80%90%e5%a4%a7%e9%98%aa%e9%97%9c%e8%a5%bf-6%e6%9c%88%e6%8e%83%e5%83%b9%ef%bd%9c%e6%96%b0%e6%9c%83%e5%93%a1%e5%be%8c%e7%b4%84-hk1120-%e8%b5%b7%e3%80%91/#respond Mon, 01 Jun 2026 17:13:37 +0000 https://galvoxstar.com/?p=916
想 6 月快閃大阪?今次掃 GBA 大灣區航空官方 calendar,見到香港 HKG → 大阪關西 KIX,6 月最低原價約 HK$1,179;如果用到 GBA 官方新會員 5% 優惠,入手價估算約 HK$1,120 起。✈

最平日子暫見:6/02、6/09、6/26;全月約 21/30 日有位,選擇算多。大阪行程彈性大,無論係 USJ、心齋橋、京都一日遊,都幾適合快閃安排。

📌 官方訂票連結見留言區👇
價錢同座位會浮動,落單前記得以 GBA 官網最終顯示為準。

❤ 收藏定呢個 Post
📢 Tag 個想去大阪嘅朋友
✏ 留言「大阪」話我知想睇幾日行程

#大灣區航空 #GreaterBayAirlines #香港大阪 #大阪機票 #關西機場 #日本機票 #6月旅行 #平機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%e3%80%90%e5%a4%a7%e9%98%aa%e9%97%9c%e8%a5%bf-6%e6%9c%88%e6%8e%83%e5%83%b9%ef%bd%9c%e6%96%b0%e6%9c%83%e5%93%a1%e5%be%8c%e7%b4%84-hk1120-%e8%b5%b7%e3%80%91/feed/ 0
🪤 舟山唔係只得和尚——海水、沙灘、跳島,一次過滿足晒。 https://galvoxstar.com/%f0%9f%aa%a4-%e8%88%9f%e5%b1%b1%e5%94%94%e4%bf%82%e5%8f%aa%e5%be%97%e5%92%8c%e5%b0%9a-%e6%b5%b7%e6%b0%b4%e3%80%81%e6%b2%99%e7%81%98%e3%80%81%e8%b7%b3%e5%b3%b6%ef%bc%8c%e4%b8%80/ https://galvoxstar.com/%f0%9f%aa%a4-%e8%88%9f%e5%b1%b1%e5%94%94%e4%bf%82%e5%8f%aa%e5%be%97%e5%92%8c%e5%b0%9a-%e6%b5%b7%e6%b0%b4%e3%80%81%e6%b2%99%e7%81%98%e3%80%81%e8%b7%b3%e5%b3%b6%ef%bc%8c%e4%b8%80/#respond Mon, 01 Jun 2026 09:23:52 +0000 https://galvoxstar.com/?p=924 舟山唔係只得和尚——海水、沙灘、跳島,一次過滿足晒。

💰 入手價:HK$1,000(正價HK$1,053+新會員5% Coupon)
✅ 適用:新會員首航優惠(自動扣減,唔需要輸入優惠碼)
📆 最平日子:6月2日起多日平飛
📊 6月有位日:6/02, 04, 06, 09, 11, 13, 16, 18, 20, 23, 25, 27, 30(13/30日)
✅ 相比曼谷2日,舟山多位又多元——6月入夏,海島天氣正值舒服

🛒 3步入手:
1⃣ 前往 GBA 官網預訂
2⃣ 選擇目的地「舟山HSN」+出發日期
3⃣ 系統自動識別新會員,結帳時5%優惠即時生效

⚠ 如揀唔到心水日子:
舟山航班相對穩定,13日有位可選
建議預留2-3個後備日期,避免高峰期無位

💡 疊加優惠:
✅ 新會員5% Coupon(現已可領)
✅ 學生證可享8折(需要學生證驗證)
✅ 長者65歲+ 可享88折(需要長者證)

🌊 玩乜:
普陀山觀音聖地/嵊泗列島跳島遊/舟山海鮮
6月陽光海灘季節正開始,想避開人潮就趁早book

#GBA #大灣區航空 #GreaterBayAirlines #舟山機票 #普陀山 #海島遊 #跳島 #舟山優惠 #6月機票 #平機票

📱 原文:Facebook 帖文 | 由 請假去旅行 Travel Hacker hk 自動匯入

]]>
https://galvoxstar.com/%f0%9f%aa%a4-%e8%88%9f%e5%b1%b1%e5%94%94%e4%bf%82%e5%8f%aa%e5%be%97%e5%92%8c%e5%b0%9a-%e6%b5%b7%e6%b0%b4%e3%80%81%e6%b2%99%e7%81%98%e3%80%81%e8%b7%b3%e5%b3%b6%ef%bc%8c%e4%b8%80/feed/ 0