最後更新:2026/10/13
打開剛架好的 WooCommerce 商店,自己下一張測試訂單,很快就會發現怪怪的地方。「名字」排在「姓氏」前面,有人乾脆把「王小明」三個字全打進名字欄;縣市是一格空白讓客人自己填,同一個地方收到「台北」「臺北市」「北市」三種寫法;訂單上的地址印成「大安區 106, 臺北市」,跟台灣人寫信封的順序剛好相反。
WooCommerce 是照國外的地址格式設計的,在台灣開網店,結帳頁幾乎都要調一次。下面一步一步改,最後的結果是:縣市用下拉選單選、姓氏在前、用不到的欄位藏起來,訂單和通知信上的地址照「郵遞區號、縣市、鄉鎮、路名」的順序排。
不想自己改?把這篇交給 AI
把這篇的網址(或全文)連同下面這段話貼給 AI:
我的網站是 WordPress,有裝 WooCommerce。我想照下面這篇文章,把結帳頁改成台灣習慣:縣市用下拉選單、姓氏在名字前面、訂單上的地址照台灣的寫法排。
請先問我:我的結帳頁是傳統的還是新版區塊的、有沒有裝其他會改結帳欄位的外掛。
問清楚之後,再一步一步告訴我:要用哪一段程式碼、貼在哪裡、哪些地方要換成我自己的資料,以及改完怎麼測試。
如果文章的做法不適合我的網站,請直接告訴我原因和替代做法。
文章:(貼上這篇的網址,或整篇內容)
改之前先備份,密碼不要貼給 AI。
先看你的結帳頁是哪一種
動手之前先確認一件事:你的結帳頁是傳統的,還是新版的區塊結帳頁。到後台「頁面」找到「結帳」,點進去編輯。如果裡面只有一段 [woocommerce_checkout] 短代碼,就是傳統結帳頁;如果看到一整塊可以點選的結帳區塊,就是區塊結帳頁。近一兩年新裝的 WooCommerce,預設都是區塊結帳頁。
這件事很重要。網路上很多結帳欄位的教學,用的是 woocommerce_checkout_fields 這個過濾器,它只對傳統結帳頁有效,放到區塊結帳頁完全沒有反應。很多人照著教學貼了程式碼卻看不到變化,原因就在這裡。這篇用的方法是改「台灣地址的欄位規則」,兩種結帳頁都會讀這份規則,我們在兩種結帳頁上都實際下過單測試。
程式碼要放在哪裡
下面的程式碼不要直接改在佈景主題裡,主題一更新就會被蓋掉。比較穩的做法有兩種:裝一個管理程式碼片段的外掛(例如 Code Snippets),每段程式碼分開存、可以單獨停用;或者放進子主題的 functions.php。
改之前先完整備份一次。萬一貼錯讓網站變成白畫面,也不用慌:用主機的檔案管理或 FTP,把出問題的外掛資料夾改名,網站就能先恢復,再回後台修正。
第一步:縣市改成下拉選單
WooCommerce 沒有內建台灣的縣市清單,所以縣市欄只能讓客人自己打字。加上這段,縣市就變成 22 個選項的下拉選單:
// 加入台灣 22 個縣市(代碼用國際標準 ISO 3166-2:TW)
add_filter('woocommerce_states', function ($states) {
$states['TW'] = [
'TPE' => '臺北市', 'NWT' => '新北市', 'KEE' => '基隆市',
'TAO' => '桃園市', 'HSZ' => '新竹市', 'HSQ' => '新竹縣',
'MIA' => '苗栗縣', 'TXG' => '臺中市', 'CHA' => '彰化縣',
'NAN' => '南投縣', 'YUN' => '雲林縣', 'CYI' => '嘉義市',
'CYQ' => '嘉義縣', 'TNN' => '臺南市', 'KHH' => '高雄市',
'PIF' => '屏東縣', 'ILA' => '宜蘭縣', 'HUA' => '花蓮縣',
'TTT' => '臺東縣', 'PEN' => '澎湖縣', 'KIN' => '金門縣',
'LIE' => '連江縣',
];
return $states;
});
縣市變成固定選項,好處不只是寫法統一。WooCommerce 的「運送區域」可以依縣市設定,你可以另外開一個「外島」區域,選澎湖縣、金門縣、連江縣,運費設得跟本島不同。要注意運送區域是由上往下比對的,「外島」要拖到「台灣」上面,不然外島的地址會先被「台灣」那一區接走,收到的還是本島運費。
第二步:姓氏在前,欄位照台灣順序排
接著調整欄位順序和名稱。每個欄位都有一個排序數字,數字小的排前面;台灣人習慣先寫姓再寫名,地址從縣市、鄉鎮一路寫到門牌:
// 台灣地址的欄位名稱與順序(數字越小越前面)
add_filter('woocommerce_get_country_locale', function ($locale) {
$tw = [
'last_name' => ['priority' => 10, 'class' => ['form-row-first']],
'first_name' => ['priority' => 20, 'class' => ['form-row-last']],
'state' => ['label' => '縣市', 'priority' => 42],
'city' => ['label' => '鄉鎮市區', 'priority' => 44],
'postcode' => ['label' => '郵遞區號', 'priority' => 46,
'required' => false],
'address_1' => ['label' => '地址', 'priority' => 48,
'placeholder' => '路名、巷弄、門牌、樓層'],
'address_2' => ['hidden' => true, 'required' => false],
];
foreach ($tw as $key => $rules) {
$locale['TW'][$key] = array_merge($locale['TW'][$key] ?? [], $rules);
}
return $locale;
});
裡面有兩個細節。傳統結帳頁的姓名是左右兩欄並排,只改排序數字的話,畫面上名字仍然在左邊,所以姓氏要同時換成左欄(form-row-first)、名字換成右欄。另外,郵遞區號改成選填。台灣在 2020 年 3 月起改用 3+3 碼,很多人只記得前 3 碼,甚至不記得,硬性規定必填,只會讓一部分客人卡在結帳頁。
「地址第 2 行」這一格是國外寫公寓、單位號碼用的,台灣地址一行就寫得完,直接藏起來。
第三步:電話必填、公司欄位,用後台設定就好
電話要不要必填、要不要顯示公司名稱,WooCommerce 本身就有開關,不用寫程式。傳統結帳頁到「外觀 → 自訂 → WooCommerce → 結帳」設定;區塊結帳頁在編輯結帳頁時,點一下地址區塊,右邊的設定就能切換「隱藏、選填、必填」。兩邊改的是同一個設定,改一邊另一邊也會跟著變。宅配要聯絡收件人,電話建議設成必填。
傳統結帳頁右邊還有一大格「訂單備註」。如果你不需要客人留言,可以用一行程式碼拿掉:
// 傳統結帳頁拿掉「訂單備註」
add_filter('woocommerce_enable_order_notes_field', '__return_false');
區塊結帳頁的訂單備註本來就收在「在你的訂單中新增備註」這個勾選框後面,客人不勾就不會展開,不太佔版面,可以不用處理。
如果你的商店只寄台灣,可以到「WooCommerce → 設定 → 一般」,把「銷售地區」設成「銷售至特定國家」、只選台灣。國家欄就不用客人自己選,也少一個出錯的機會。
第四步:訂單、通知信上的地址照台灣寫法
最後一段讓地址的「印出來的樣子」符合台灣習慣,訂單頁、感謝頁、Email 通知都會一起改:
// 地址改成:郵遞區號 縣市鄉鎮地址,下一行寫姓名
add_filter('woocommerce_localisation_address_formats', function ($formats) {
$formats['TW'] = "{postcode} {state}{city}{address_1}\n"
. "{last_name}{first_name}\n{company}";
return $formats;
});
我們在測試站下單後,感謝頁上的地址從原本的「大安區 106, 臺北市」變成「106 臺北市大安區復興南路一段 100 號 5 樓」,下一行是「王小明」,出貨人員照著抄就能貼上包裹。
進階:鄉鎮下拉、郵遞區號自動帶入
改到這裡,鄉鎮市區仍然是客人自己打字。要做到「選了縣市、鄉鎮跟著變,郵遞區號自動帶入」,需要一份全台 368 個鄉鎮市區的對照表,再加一段 JavaScript 監聽客人的選擇。傳統結帳頁比較好做;區塊結帳頁的畫面由 WooCommerce 自己控制,要用它提供的擴充方式寫,工程比較大。
如果還需要超商取貨,或串接綠界、藍新這類台灣金流,可以看看台灣開發者維護的 RY Tools for WooCommerce,裡面也有「姓氏在前」「郵遞區號在前」「隱藏國家欄」的選項。不管用哪一種,改完都自己從頭到尾下一次單,在電腦和手機上各試一次。
結帳頁是收錢前的最後一關
客人願意走到結帳頁,表示已經決定要買了。這時候每多一個看不懂的欄位、每多一次打錯重填,都有人會關掉頁面。把結帳頁改成台灣人熟悉的樣子,是最便宜的轉換率優化。
如果你還在用社群接單、私訊報價,可以先看看〈IG 帳號不是你的資產〉,想想為什麼要有自己的網站。MIMI 專做客製化網頁設計,購物車電商網站、線上課程網站都能從規劃到上線一起處理。MIMI 提供台灣網頁設計服務,從臺北、新北到全台灣,都可以用電話、Email 直接和設計師討論;費用可以先看首頁的製作費用參考,歡迎聯絡 MIMI。
