在WooCommerce中,我试图根据购物车项目计数有不同的运输价格。示例:
因此,第一个项目将设置为5美元的成本,所有其他项目将增加2美元的每一个。这可能吗?
vd8tlhqk1#
1)添加此代码,使您的运费计算成本基于购物车项目计数 (项目总数):
add_filter( 'woocommerce_package_rates', 'progressive_flat_rate_cost_calculation', 10, 2 ); function progressive_flat_rate_cost_calculation( $rates, $package ) { // The cart count (total items in cart) $cart_count = WC()->cart->get_cart_contents_count(); $taxes = array(); $cost = 5; // Cost for the 1st item $other = 2; // Cost for additional items // Calculation if( $cart_count > 1 ) $cost += ($cart_count - 1) * $other; // Iterating through each shipping rate foreach($rates as $rate_key => $rate_values){ $method_id = $rate_values->method_id; $rate_id = $rate_values->id; // Targeting "Flat Rate" shipping method if ( 'flat_rate' === $method_id ) { // Set the new calculated rate cost $rates[$rate_id]->cost = number_format($rates[$rate_id]->cost * $cost, 2); // Taxes rate cost (if enabled) foreach ($rates[$rate_id]->taxes as $key => $tax){ if( $rates[$rate_id]->taxes[$key] > 0 ){ // set the new tax cost $taxes[$key] = number_format( $rates[$rate_id]->taxes[$key] * $cost, 2 ); $has_taxes = true; } else { $has_taxes = false; } } if( $has_taxes ) $rates[$rate_id]->taxes = $taxes; } } return $rates; }
2)现在,在一般运输设置中,您需要为每个运输区设置一个**"统一费率"运输方式,其成本将被设置为1**(在您的WooCommerce运输设置中)。
1
禁用每个统一费率,然后保存,然后启用此统一费率并保存。最好从全新的推车开始 (因此在测试前清空推车)此代码在WooCommerce 3+上测试并工作
rsl1atfo2#
它可以通过设置一个统一的价格只...没有代码是必需的。只需激活统一费率航运...在成本中写下这条规则---5 + 2 *([数量] - 1)
2条答案
按热度按时间vd8tlhqk1#
1)添加此代码,使您的运费计算成本基于购物车项目计数 (项目总数):
2)现在,在一般运输设置中,您需要为每个运输区设置一个**"统一费率"运输方式,其成本将被设置为
1
**(在您的WooCommerce运输设置中)。禁用每个统一费率,然后保存,然后启用此统一费率并保存。
最好从全新的推车开始 (因此在测试前清空推车)
此代码在WooCommerce 3+上测试并工作
rsl1atfo2#
它可以通过设置一个统一的价格只...没有代码是必需的。
只需激活统一费率航运...
在成本中写下这条规则---
5 + 2 *([数量] - 1)