快速答案:WooCommerce 內建只有「單獨販售」(一張訂單限一件),真正的「每人限購」要靠外掛依帳號累計過去的訂單。取消後買不了要分兩件事看:庫存在訂單改成「取消」時會補回,限購的計數則看外掛設定算哪些訂單狀態。票券總量用商品庫存控制,前台數字不變多半是快取。
為什麼會這樣 #
「限購」其實有三種:每張訂單限幾件、每人累計限幾件、全部總共賣幾件。單獨販售只擋第一種,客人分兩次下單就能買兩張;總量靠商品庫存;只有「每人累計」需要外掛去翻這個人過去的訂單。
外掛怎麼算,決定取消後能不能再買。有的外掛把所有訂單都算進去,包含已取消、付款失敗的,客人刷卡失敗一次就被當成買過了;好一點的外掛可以選只算「處理中」「完成」。訪客結帳沒有帳號,只能用信箱比對,換個信箱就繞過,所以限購商品通常要求先登入。
庫存回補則是 WooCommerce 的機制:訂單改成取消,已扣的庫存會加回去;退款要勾選補回庫存才會加。另外「保留庫存」會把逾時未付款的訂單自動取消,如果 ATM 或超商代碼的訂單停在待付款,時間設太短,客人還沒去繳就被取消了。
怎麼處理 #
- 一張訂單限一件:商品 → 庫存分頁勾「單獨販售」。要限 2、3 件,需要數量限制外掛。
- 每人累計限購:裝依使用者計算的限購外掛(例如 Maximum Products per User for WooCommerce),在設定裡確認它計入哪些訂單狀態,把取消、失敗、退款排除。
- 限購商品要求登入後才能購買,商品頁寫清楚「每個帳號限購幾張」。
- 總量:商品勾「管理庫存」並填總數;可變商品的多種票別要共用同一個總量,就在父商品設庫存,變化類型不另設。
- 前台剩餘數量不動:商品頁與活動頁排除頁面快取或縮短快取時間,改完清一次 CDN。
- 檢查 WooCommerce → 設定 → 商品 → 庫存 的「保留庫存」分鐘數,確認不會把還在等繳款的訂單提早取消。
- 開賣前用測試帳號買到上限、取消、再買一次;再退款一張看庫存有沒有補回。
我們實際遇過的情況 #
一個賣活動票券的網站要設「每人限購一張」,原本用的綜合型外掛會把取消的訂單也算進去,客人的訂單一取消就再也買不了,當時暫時沒有解法。後來改用專門的每人限購外掛,並用測試帳號另外測過「限購 3」的情境。
同一個網站某場活動設了總量,後台剩下的票已經少很多,活動頁卻一直顯示最初的張數——後台數字對、前台不動,第一個要查的就是頁面快取。另一家電商遇到庫存回補不如預期,我們先把保留庫存的設定清空,再觀察取消訂單後庫存是否正常補回。
什麼時候該找人 #
名額有限的活動,限購與總量設錯不是超賣就是擋掉真客人,退票還牽涉退刷與發票。換外掛或寫限購程式碼前,先在測試站跑完整流程;已經超賣的,先暫停販售再處理,不要邊賣邊改。票券寄送與退票可參考 活動票券常見問題。
WPTOOLBEAR網站工具熊