php 如何为附加项目添加不同的运费

sdnqo3pr  于 2023-01-12  发布在  PHP
关注(0)|答案(2)|浏览(113)

在WooCommerce中,我试图根据购物车项目计数有不同的运输价格。
示例:

  • 1件5美元
  • 2个项目$5 + $2
  • 3件5美元以上的物品(2 x 2$)... * 等等 *...

因此,第一个项目将设置为5美元的成本,所有其他项目将增加2美元的每一个。
这可能吗?

vd8tlhqk

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;
}
  • 代码在您的活动子主题(或主题)的function.php文件或任何插件文件中。*

2)现在,在一般运输设置中,您需要为每个运输区设置一个**"统一费率"运输方式,其成本将被设置为1**(在您的WooCommerce运输设置中)。

    • 有时您需要刷新配送区域缓存(在woocommerce配送设置中为每个区域):**

禁用每个统一费率,然后保存,然后启用此统一费率并保存。
最好从全新的推车开始 (因此在测试前清空推车)
此代码在WooCommerce 3+上测试并工作

rsl1atfo

rsl1atfo2#

它可以通过设置一个统一的价格只...没有代码是必需的。
只需激活统一费率航运...
在成本中写下这条规则---
5 + 2 *([数量] - 1)

相关问题