1 回答
TA贡献1898条经验 获得超8个赞
由于这与运输包裹有关(因为购物车商品可以拆分(划分)为多个运输包裹),因此您需要使用方法$packages中包含的变量参数calculate_shipping()。
WC_Cart因此,如果不使用对象方法,您的代码将会略有不同:
public function calculate_shipping( $packages = array() ) {
$total = $total_tax = 0; // Initializing
// Loop through shipping packages
foreach( $packages as $key => $package ){
// Loop through cart items for this package
foreach( $package['contents'] as $item ){
$total += $item['total']; // Item subtotal discounted
$total_tax += $item['total_tax']; // Item subtotal tax discounted
}
}
add_rate( array(
'id' => $this->id,
'label' => $this->title,
'cost' => $total * $this->percentage_rate / 100,
// 'calc_tax' => 'per_item'
) );
}
代码位于活动子主题(活动主题)的functions.php 文件中。经过测试并有效。
注:此处计算的是折扣后的购物车商品小计(不含税)。您可以轻松添加添加使其在含税折扣后的购物车商品小计中,替换:
'cost' => $total * $this->percentage_rate / 100,
经过:
'cost' => ($total + $total_tax) * $this->percentage_rate / 100,
您可以查看如何制作运输包裹:
WC_Cart
get_shipping_packages()
方法源代码
如果您还想处理传送类等,请检查:
WC_Shipping_Flat_Rate
calculate_shipping()
方法源代码。
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报