在Woocommerce我试图添加运费,如果一个购物车项目有一个特定的航运类分配给相关的产品。我想这个运费乘以购物车项目数量...
我有这样的工作时,一个产品被添加到购物车和数量增加,额外的运费也增加了。但是,如果我添加另一个产品与相同的航运类,并增加数量的额外费用不增加。
这是我的代码:
// Add additional fees based on shipping class
function woocommerce_fee_based_on_shipping_class( $cart_object ) {
global $woocommerce;
// Setup an array of shipping classes which correspond to those created in Woocommerce
$shippingclass_dry_ice_array = array( 'dry-ice-shipping' );
$dry_ice_shipping_fee = 70;
// then we loop through the cart, checking the shipping classes
foreach ( $cart_object->cart_contents as $key => $value ) {
$shipping_class = get_the_terms( $value['product_id'], 'product_shipping_class' );
$quantity = $value['quantity'];
if ( isset( $shipping_class[0]->slug ) && in_array( $shipping_class[0]->slug, $shippingclass_dry_ice_array ) ) {
$woocommerce->cart->add_fee( __('Dry Ice Shipping Fee', 'woocommerce'), $quantity * $dry_ice_shipping_fee ); // each of these adds the appropriate fee
}
}
}
add_action( 'woocommerce_cart_calculate_fees', 'woocommerce_fee_based_on_shipping_class' ); // make it all happen when Woocommerce tallies up the fees
我怎样才能使它也适用于其他购物车项目?
2条答案
按热度按时间sgtfey8w1#
您的代码有点过时,并且存在一些错误。要根据产品运输分类和购物车项目数量添加费用,请使用以下代码:
代码进入您的活动子主题(或活动主题)的function.php文件。
23c0lvtd2#
如果有一个航运类在购物车应该没有费用,但如果有一个以上的航运类,那么应该是额外的1欧元手续费和增加每另一个航运类。
情况一:将具有运输分类(仓库1)的产品添加到购物车=无额外费用
情况二:添加到购物车的运输分类(仓库1)的产品,添加到购物车的另一运输分类(仓库2)的产品= 1x添加到购物车的处理费小计:产品2x - 10欧元运费-免手续费1x -1欧元总计- 11欧元
情况三:添加到购物车的运输分类(仓库1)的产品,添加到购物车的运输分类(仓库2)的产品,添加到购物车的运输分类(仓库3)的产品=添加到购物车的手续费的2倍小计:产品3x - 15欧元运费-免手续费2x -1欧元总计- 12欧元