WooCommerce 教程:重量運送(不需要插件)

WooCommerce 教程:重量運送(不需要插件)

Woo 2.6 介紹了運輸區域,並且我們可以使用簡單的 PHP 來完成許多 “高級” 運輸規則,例如重量運送。

1. 按重量計算 – 要求

如果您或您的客戶要求按重量運輸,那麼您首先必須確保所有簡單產品和/或單個變體的重量不為零。很簡單,但有時人們問 “為什麼運輸 y 重不起作用”,最常見的錯誤是產品沒有重量!

此外,在 WooCommerce> 設置> 產品下,請確保選擇正確的 “ 重量單位 ”,這是人們造成的另一個典型錯誤(默認為 Kg 我相信)。

2. 運送重量 – 運送方式設置

您可以向每個運送區域添加無限制的統一費率。此外,您可以將每個統一費率重新命名為 “1kg 以下的訂單”,“10kg 以上的訂單” 等,以使結帳標籤更加人性化。

在我們的例子中,我們將設置 3 個重量級:訂單最多可達 1kg,運送 10 美元,訂單高達 5kg,運送 20 美元,訂單高於 5kg,運送 30 美元

這裡是如何設置 WooCommerce 的運送方式:

  1. 統一費率#1> 重命名為 “低於 1kg 的訂單”,並分配成本= $ 10
  2. 統一費率#2> 重命名為 “5 公斤以下”,並分配成本= $ 20
  3. 固定費率#3> 重命名為 “5kg 以上的訂單”,並分配成本= $ 30

您對特定區域的最終結果(我稱之為 “美國 – 重量運輸”)將如下所示:

Woo 商務重量(運送區域設置)

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 用戶也希望您的參與。

文章沒看懂?代碼不會用?需要幫助您可以去論壇提問自助服務台

作者風間

在哪裡跌倒,就在哪裡趴着。