Woo 2.6 介紹了運輸區域,並且我們可以使用簡單的 PHP 來完成許多 「高階」 運輸規則,例如重量運送。
1. 按重量計算 – 要求
如果您或您的客戶要求按重量運輸,那麼您首先必須確保所有簡單產品和/或單個變體的重量不為零。很簡單,但有時人們問 「為什麼運輸 y 重不起作用」,最常見的錯誤是產品沒有重量!
此外,在 WooCommerce> 設定> 產品下,請確保選擇正確的 「 重量單位 」,這是人們造成的另一個典型錯誤 (預設為 Kg 我相信) 。
2. 運送重量 – 運送方式設定
您可以向每個運送區域新增無限制的統一費率。此外,您可以將每個統一費率重新命名為 「1kg 以下的訂單」,「10kg 以上的訂單」 等,以使結帳標籤更加人性化。
在我們的例子中,我們將設定 3 個重量級:訂單最多可達 1kg,運送 10 美元,訂單高達 5kg,運送 20 美元,訂單高於 5kg,運送 30 美元。
這裡是如何設定 WooCommerce 的運送方式:
- 統一費率#1> 重新命名為 「低於 1kg 的訂單」,並分配成本= $ 10
- 統一費率#2> 重新命名為 「5 公斤以下」,並分配成本= $ 20
- 固定費率#3> 重新命名為 「5kg 以上的訂單」,並分配成本= $ 30
您對特定區域的最終結果 (我稱之為 「美國 – 重量運輸」) 將如下所示:

3. 運送重量 – PHP 程式碼段
現在我們需要 「告訴」WooCommerce,根據購物車的重量,應該使用統一費率而不是另一個。只有這樣,我們才能向終端使用者顯示正確的統一費率。
首先,記錄三個統一費率的獨特 ID 。他們應該看起來像 「 flat_rate:9 」 。有關如何找到更多資訊
二,讓我們的程式碼!我們需要根據總重量 「不設定」 費率,所以總共需要 3 個條件:當重量低於 1(kg),低於 5(kg) 以上時。
/** * @snippet Shipping by Weight | WooCommerce * @sourcecode https://businessbloomer.com/?p=21432 * @author Rodolfo Melogli * @testedwith WooCommerce 2.6.8, WordPress 4.7 */ add_filter( 'woocommerce_package_rates', 'bbloomer_woocommerce_tiered_shipping', 10, 2 ); function bbloomer_woocommerce_tiered_shipping( $rates, $package ) { if ( WC()->cart->cart_contents_weight < 1 ) { if ( isset( $rates['flat_rate:5'] ) ) unset( $rates['flat_rate:6'], $rates['flat_rate:8'] ); } elseif ( WC()->cart->cart_contents_weight < 5 ) { if ( isset( $rates['flat_rate:5'] ) ) unset( $rates['flat_rate:5'], $rates['flat_rate:8'] ); } else { if ( isset( $rates['flat_rate:5'] ) ) unset( $rates['flat_rate:5'], $rates['flat_rate:6'] ); } return $rates; }
這裡是證明:
如何新增此程式碼?
1 、您可以將 PHP 程式碼片段放置在主題或子主題的 functions.php 檔案的底部 (如果是 CSS 程式碼,請新增到子主題的 style.css 檔案底部) 修改之前建議先備份原始檔案,若出現錯誤請先刪除此程式碼。
2 、 WordPress 4.9 後改進了主題編輯器,對於 CSS 程式碼也可開啟網站前臺編輯器的 【自定義】,複製程式碼新增到自定義 css 中。
此程式碼是否可用?
如需幫助或是您有更好的方案想分享?請到薇曉朵 WooCommerce 中文論壇留言告知,我們希望可以幫到更多國內的 WooCommerce 使用者也希望您的參與。