WooCommerce 教程:重量运送(不需要插件)
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 用户也希望您的参与。