Woocommerce中的渐进式购物车项目自定义运输成本

时间:2018-11-13 16:31:51

标签: php wordpress woocommerce product-quantity shipping-method

我需要找出一种根据购物车上的商品来确定woocommerce运费的方法。 如果购买1-2件商品,我需要收费120,购买3件商品时,我需要收费120。我为4+(基于$)添加了免费送货选项

我尝试将其添加到统一费率价格中:120 + 60([qty] -2),它在除1个项目之外的所有情况下均有效,因为它收取60美元的费用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用以下代码,您将能够获得此运费:
-1件或2件:$ 120
-3件:$ 180
-4件或以上:免费送货(隐藏统一费率方法)

1)将以下代码添加到活动子主题(活动主题)的function.php文件中:

add_filter('woocommerce_package_rates', 'custom_progressive_shipping_costs', 10, 2);
function custom_progressive_shipping_costs( $rates, $package ){

    $items_count  = WC()->cart->get_cart_contents_count();

    if( $items_count < 3 ){
        $cost_rate = 2;
    } else {
        $cost_rate = $items_count;
    }

    foreach ( $rates as $rate_key => $rate ){
        $taxes = [];
        $has_taxes = false;
        // Targeting "flat rate"
        if ( 'flat_rate' === $rate->method_id ) {
            // For 1, 2 or 3 items
            if ( $items_count <= 3 ) {
                $rates[$rate_key]->cost = $rate->cost * $cost_rate;

                // Taxes rate cost (if enabled)
                foreach ($rates[$rate_key]->taxes as $key => $tax){
                    if( $tax > 0 ){
                        $has_taxes = true;
                        $taxes[$key] = $tax * $cost_rate;
                    }
                }
                if( $has_taxes )
                    $rates[$rate_key]->taxes = $taxes;
            }
            // For more than 3 hide Flat rate
            else {
                // remove flat rate method
                unset($rates[$rate_key]);
            }
        }
    }
    return $rates;
}

保存...

2)在您的送货方式设置中,您需要将60设置为“固定费率”费用并保存。

您需要保留最低金额的“免费送货”方法。

您完成了。经过测试,可以正常工作。