有朋友要求我根据重量在购物车上添加额外费用,并且仅针对特定类别(或排除某些类别,没关系)。
主题是,在夏天,他想在包装中加入冰块以保持产品冷藏(例如牛奶、奶酪等)。
他还销售小工具和参观他的工厂等,因此他不想对这些产品收取额外费用。
基于“根据 Woocommerce 中的总重量添加自定义费用”答案,我的代码版本如下,对整个购物车应用额外费用,不包括访问产品,因为访问的权重显然是 0。
但我不是代码专家,我不知道如何插入数组以包含“牛奶”和“奶酪”等类别(反之亦然以排除“访问”和“小工具”)。
令人上瘾的是,我的代码将费用增加了 3 公斤(由于 DHL/UPS/GLS 等对数据包的大小)
/* Extra Fee based on weight */
add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_fee', 30, 1 );
function shipping_weight_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Convert in grams
$cart_weight = $cart->get_cart_contents_weight() * 1000;
$fee = 0.00; // initial fee
// if cart is > 0 add €1,20 to initial fee by steps of 3000g
if( $cart_weight > 0 ){
for( $i = 0; $i < $cart_weight; $i += 3000 ){
$fee += 1.20;
}
}
// add the fee / doesn't show extra fee if it's 0
if ( !empty( $fee )) {
$cart->add_fee( __( 'Extra for ice' ), $fee, false );
}
}
最后一个问题是:为什么 $i 变量可以是 0...1...1000000 而结果没有任何变化?代码似乎完全一样......
谢谢