3

(如何)我可以在 WooCommerce 中为固定运费设置 max_fee 吗?

将此添加到运输方式的固定费用设置中的成本字段有效:

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

(即每个订单的运费 2,5 + 每个产品 1 欧元)-> 至少 3,5 并且每件产品增加 + 1)。

但是,我想至少收取 3,50(1 件)和 4,50 最高(2 件或更多件)。即功能上这个公式:(3,5 * [qty]) [fee **max_fee** = "4,5"]

这可能吗?/ 使用的正确语法是什么?我在任何地方都找不到这个。我只找到了这个参考(“为统一费率添加 max_fee 短代码属性”/“在统一费率成本字段中除了 min_fee 之外还允许 max_fee”),这似乎表明一个功能请求为固定费用(百分比除外)提供 max_fee被实施。但我无法让它工作。

4

1 回答 1

3

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

  • 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

于 2018-12-28T17:00:54.287 回答