php Woocommerce中的最大成本基于渐进数量的运费

gojuced7  于 2023-02-28  发布在  PHP
关注(0)|答案(2)|浏览(99)

(How)我可以在WooCommerce中为固定运费设置max_fee吗?
将此值添加到发运方法的固定费用设置中的成本字段的工作原理如下:

(1 * [qty]) + [fee min_fee = "2,5"]

(i.e.运输成本2,5每个订单+1欧元每个产品)-〉至少3,5和增加+1每个产品)。
然而,我想收取3,50在最低(1个项目)和4,50在最高(2个或更多项目)。即,函数如下公式:(3,5 * [qty])[fee **max_fee** = "4,5"]
这是可能的吗?/使用的正确语法是什么?我在任何地方都找不到这个语法。我只找到this reference ("add max_fee shortcode attribute for flat rate" / "allow max_fee in addition to min_fee in flat rate costs fields"),它似乎表明实现了一个针对固定费用(而不是百分比)的max_fee功能请求。但我无法让它工作。

eimct9ow

eimct9ow1#

您不能使用可用设置来收取定义的可变运费:

      • 3,50**表示第一个项目
      • 4,50**表示多个项目(2个或更多)

因此,您需要使用以下自定义挂钩函数:

add_filter('woocommerce_package_rates', 'custom_shipping_costs', 10, 2 );
function custom_shipping_costs( $rates, $package ){
    // Get cart items count
    $items_count = WC()->cart->get_cart_contents_count();

    // Your cost settings
    $new_cost = $items_count > 1 ? 4.5 : 3.5;

    // Loop through shipping methods rates
    foreach ( $rates as $rate_key => $rate ){
        $has_taxes = false;

        // Targeting "Flat rate" shipping methods
        if ( 'flat_rate' === $rate->method_id ) {
            $default_cost = $rates[$rate_key]->cost;

            $rates[$rate_key]->cost = $new_cost;

            $rate_conversion = $new_cost / $default_cost;

            // Taxes rate cost (if enabled)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $tax > 0 ){
                    $taxes[$key] = $tax * $rate_conversion;
                    $has_taxes = true;
                }
            }
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

代码进入您的活动子主题(或活动主题)的function.php文件。
保存代码后,进入统一费率设置,将费率成本设置为**1.00**:

现在运费将从**3.50(一件物品) 更改为4.50**(多件物品)

cclgggtu

cclgggtu2#

我能想到的最简单的方法是使用以下工具近似自定义函数:https://mycurvefit.com/
目标是通过指定数据点来得到一个接近某个极限的函数--然后这个工具近似一个函数来拟合这个数据。这个解决方案不会导致定期的漂亮费用,但如果你不想进入代码,它会是一个快速的解决方案。

相关问题