woocommerce运输有一个内置选项,用于设置购物车中产品数量的费用。每个运输类别还提供收费选项。但是我有成千上万的产品,并且需要为每个产品收取费用(每个产品不是数量的产品)。
例如,购物车中有2个产品“苹果”和23个产品“橙色”。我需要对任何数量的苹果和任何数量的橙子收取10美元的固定费用。我似乎在任何可用的插件中都找不到解决方案。他们都按数量收费,但不收费。
答案 0 :(得分:0)
要按购物车中的订单项获取费用,需要满足以下条件:
1)在WooCommerce设置>运送中:为“固定费率”运送方式(并保存)设置费用10。
2)将活动子主题(或活动主题)添加到functions.php
文件中,此代码:
add_filter( 'woocommerce_package_rates', 'shipping_cost_based_on_number_of_items', 10, 2 );
function shipping_cost_based_on_number_of_items( $rates, $package ) {
$numer_of_items = (int) sizeof($package['contents']);
// Loop through shipping rates
foreach ( $rates as $rate_key => $rate ){
// Targetting "Flat rate" shipping method
if( 'flat_rate' === $rate->method_id ) {
$has_taxes = false;
// Set the new cost
$rates[$rate_key]->cost = $rate->cost * $numer_of_items;
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
// New tax calculated cost
$taxes[$key] = $tax * $numer_of_items;
$has_taxes = true;
}
}
// Set new taxes cost
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
return $rates;
}
刷新运输缓存: (必需)
- 此代码已保存在活动主题的function.php文件中。
- 购物车是空的
- 在运输区域设置中,禁用/保存任何运输方式,然后启用“后退” /保存。
经过测试,可以正常工作。