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 用户也希望您的参与。

文章没看懂?代码不会用?需要帮助您可以去论坛提问自助服务台

作者风间

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