【问题标题】:Progressive quantity based shipping costs with a max cost in Woocommerce基于数量的渐进式运输成本在 Woocommerce 中具有最高成本
【发布时间】:2019-05-26 08:59:18
【问题描述】:

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

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

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

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

但是,我想至少收取 3,50(1 件商品)和最高 4,50(2 件或更多商品)。 IE。从功能上讲,这个公式:(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 的功能请求已实现。但我无法让它工作。

【问题讨论】:

    标签: php wordpress woocommerce cart shipping-method


    【解决方案1】:

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

    • 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 (超过一项)

    【讨论】:

    • 我已经实施了您的解决方案,非常完美,非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2016-07-04
    • 2018-11-28
    相关资源
    最近更新 更多