
重點整理
WooCommerce 沒有內建「滿額送贈品」選項,可以用 PHP 函數實作:在子主題的 functions.php 加入程式碼,購物車總金額達到設定值時,自動把指定商品 ID 加入購物車。修改前請先備份並在測試站試過。
WooCommerce 購物車設定 是可以透過加入 php 函數的方式,來變更顧客在結帳時可觸發的事件,尤其在 WooCommerce 本身沒有提供更多選項來自訂網站銷售條件的狀況下,以函數改變或者客製化交易規則是一個不錯的辦法。
在本篇教學中,將會說明如何在網站子主題中加入自訂函數,當顧客購買的訂單金額符合我們的期望值時,自動加入另一項商品至購物車中,而這個函數的功能在實務上常應用在 ” 滿額贈禮 ” ,如果説搭配折價卷功能,也可以讓額外商品做折價,整題來說,就是能讓商店行銷手法變得更加靈活自由。
注意事項:適用 WordPress 5.0 ( Beta )或以上版本
3使用 Funtion 指定金額變數與執行所需商品 ID
第一步:使用 add_action 來設定函數啟動前提:當 add_product_to_cart 與 template_redirect 重定向同時發生時,將會執行 if 條件式的陣列迴圈,在最外層陣列的 if 中必須先定義變數所代表的值,也就是給定 $product_id、$cart_total = 50 這兩個設定值,而 $found = false 是預先定義 if 迴圈,每一次執行是都將初始化比對購物車總金額的動作,而中層及內層的 if 陣列則是在定義購物車新增傷商品條件式,如果購物車數量大於 0 時,將會比對購物車金額的數值,以下方範例而言,當條件成立時時將會自動將指定 id 的商品加入到購物車中,也就是說,當購物車金額到達 50 元或以上時,將自動加入商品 id 為 50 的商品至購物車中。
第二步:將函數加入 your-child-theme/function.php 內,紅字的部分是網站所使用的子主題名稱,在主題編輯器中選擇網站子主題,目錄中點選 funtion.php 檔案,將函數加入編輯畫面結尾處,如下圖所示。

第三步:下方為函數執行後的結果示意圖。

修改 functions.php 前要注意什麼?
functions.php 只要有一個語法錯誤,整個網站就可能打不開,動手前先做好這幾件事:
- 先備份:備份網站檔案與資料庫,至少保留一份原本的 functions.php。
- 確認能用 FTP 或主機檔案管理員:後台壞掉時,才能直接把檔案改回來。
- 用子主題:程式碼寫在子主題,主題更新才不會被洗掉。
- 用純文字編輯器:從文書軟體複製會夾帶全形空白等看不見的字元,造成錯誤。
改完後到前台實際操作購物車,加減商品確認贈品的加入時機正確。
使用滿額贈函數時有哪些常見問題?
實際上線後,滿額贈最常遇到以下狀況,測試時建議逐一確認:

- 金額降到門檻以下:顧客刪掉商品後,贈品是否會被自動移除?若函數只負責加入,就需要另外處理移除的邏輯。
- 贈品重複加入:重新整理頁面或再次加入商品時,贈品數量不應增加。
- 折價券計算:門檻要用折扣前還是折扣後的金額,需先跟行銷規則對齊。
- 區塊版購物車:新版購物車區塊的運作方式不同,改完要在實際使用的購物車頁面測試。
常見問題
WooCommerce 購物車可以設定滿額送贈品嗎?
WooCommerce 沒有內建滿額贈選項,需要用程式或外掛實作。本文的做法是在子主題 functions.php 加入函數,購物車金額達到設定值時自動加入指定商品 ID;不想寫程式則可找支援滿額贈品的外掛。
贈品要怎麼設定成 0 元?
最簡單的做法是另外建立一個價格 0 元的贈品商品,並把商品可見度設為隱藏,讓它不會出現在商店頁,只會被函數自動加入購物車。記得也要設定庫存,避免贈品送完了還繼續加入。
程式碼要放在 functions.php 的哪裡?
放在子主題 functions.php 的檔案最後面即可。不要放在父主題,父主題一更新程式碼就會被覆蓋;也可以改用 Code Snippets 這類程式碼片段外掛管理,出錯時比較容易停用。
結語
最後做個小提醒,在變更商品 id 及金額限制的數值時,以英文鍵盤輸入數字在更新 funtion.php 文件時,才不會發生錯誤,如果使用複製貼上的方式,會將文書軟體中一些看不到的字元格式也一併貼上,在更新時就容易導致錯誤。
