Woocommerce 中的渐进式购物车项目自定义运费
Progressive cart item custom shipping cost in Woocommerce
我需要想出一种方法来根据购物车上的商品计算 woocommerce 运费。
如果买 1-2 件我需要收取 120,购买 3 件需要收取 180。我添加了 4+ 的免费送货选项(基于 $)
我尝试将此添加到固定费率价格中:120+60([qty]-2) 它适用于所有情况,但 1 件商品除外,因为它收取 60 美元。
有什么想法吗?
使用以下代码,您将可以获得此运费:
- 1 或 2 件商品:120 美元
- 3 件:180 美元
- 4 件或更多:免费送货(隐藏固定费率方法)
1) 将以下代码添加到您的活动子主题 (active theme) 的 function.php 文件中:
add_filter('woocommerce_package_rates', 'custom_progressive_shipping_costs', 10, 2);
function custom_progressive_shipping_costs( $rates, $package ){
$items_count = WC()->cart->get_cart_contents_count();
if( $items_count < 3 ){
$cost_rate = 2;
} else {
$cost_rate = $items_count;
}
foreach ( $rates as $rate_key => $rate ){
$taxes = [];
$has_taxes = false;
// Targeting "flat rate"
if ( 'flat_rate' === $rate->method_id ) {
// For 1, 2 or 3 items
if ( $items_count <= 3 ) {
$rates[$rate_key]->cost = $rate->cost * $cost_rate;
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
$has_taxes = true;
$taxes[$key] = $tax * $cost_rate;
}
}
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
// For more than 3 hide Flat rate
else {
// remove flat rate method
unset($rates[$rate_key]);
}
}
}
return $rates;
}
并保存……
2) 在您的送货方式设置中,您需要将 60
设置为您的 "Flat rate" 成本 并保存。
您需要保留 "Free shipping" 方法的最低金额。
大功告成。已测试并有效。
我需要想出一种方法来根据购物车上的商品计算 woocommerce 运费。 如果买 1-2 件我需要收取 120,购买 3 件需要收取 180。我添加了 4+ 的免费送货选项(基于 $)
我尝试将此添加到固定费率价格中:120+60([qty]-2) 它适用于所有情况,但 1 件商品除外,因为它收取 60 美元。
有什么想法吗?
使用以下代码,您将可以获得此运费:
- 1 或 2 件商品:120 美元
- 3 件:180 美元
- 4 件或更多:免费送货(隐藏固定费率方法)
1) 将以下代码添加到您的活动子主题 (active theme) 的 function.php 文件中:
add_filter('woocommerce_package_rates', 'custom_progressive_shipping_costs', 10, 2);
function custom_progressive_shipping_costs( $rates, $package ){
$items_count = WC()->cart->get_cart_contents_count();
if( $items_count < 3 ){
$cost_rate = 2;
} else {
$cost_rate = $items_count;
}
foreach ( $rates as $rate_key => $rate ){
$taxes = [];
$has_taxes = false;
// Targeting "flat rate"
if ( 'flat_rate' === $rate->method_id ) {
// For 1, 2 or 3 items
if ( $items_count <= 3 ) {
$rates[$rate_key]->cost = $rate->cost * $cost_rate;
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
$has_taxes = true;
$taxes[$key] = $tax * $cost_rate;
}
}
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
// For more than 3 hide Flat rate
else {
// remove flat rate method
unset($rates[$rate_key]);
}
}
}
return $rates;
}
并保存……
2) 在您的送货方式设置中,您需要将 60
设置为您的 "Flat rate" 成本 并保存。
您需要保留 "Free shipping" 方法的最低金额。
大功告成。已测试并有效。