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
* @how-to Watch tutorial @ https://businessbloomer.com/?p=19055
* @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;
  
}

这里是证明:


可以在哪里添加此代码?

您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。


这段代码是否正常可用?

或者是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。


需要关于 WooCommerce 的帮助?

请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。