这是我写的一个小函数,用于根据购物车中价格超过40欧元的产品数量增加额外的运费。
<br>
<div>
<?php
$additionalShippingCosts = 0;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$product_id = $cart_item['product_id'];
$quantity = $cart_item['quantity'];
$price = WC()->cart->get_product_price( $product );
$pricenum = (float) $product->get_price();
if($pricenum < 40) {
$price2 = 0;
} else {
$price2 = 5;
$additionalShippingCosts += $price2*$quantity;
}
?>
<div>product price: <?php echo $pricenum; ?></div>
<div>extra cost: <?php echo $price2; ?> * <?php echo $quantity; ?></div>
<br>
<?php
}
?>
<div>Additional shipping cost: <?php echo $additionalShippingCosts; ?></div>
</div>
我已经到了函数计算应该加多少钱到运费的地步,现在我需要:1)实际加到运费中 2)每次更新购物车时让它运行 3)引入运费国家的条件。
条件要简单,我打算硬编码。基本上 "如果寄往德国,每件商品超过40欧元的额外运费为10欧元","如果寄往爱尔兰,每件商品超过40欧元的额外运费为15欧元"。
[解决]我犯了一个错误,就是没有好好研究运输类能做什么。这个不需要自定义代码。只需设置位置->的统一费率;对超过XX欧元的产品增加一个运输类->;设置有类和无类的价格,即10.00*[数量]和20.00*[数量]。