当前位置: 首页 > 知识库问答 >
问题:

基于购物车总重量的运输成本(单位:3)

萧永望
2023-03-14

在我的Woocommerce网店里,我有不同的产品。我想根据购物车物品的总重量计算运费:

  • 06Kilos的成本是5€
  • 612Kilos成本是9€

事实上,如果我有一个1公斤的产品,运费是5€,但是如果我的篮子里有10件这个产品,运费仍然是5€(应该是9€代替)。

如何根据购物车总重量计算渐进运费?

共有1个答案

房泉
2023-03-14

尝试以下功能,根据购物车总重量更改“统一费率”成本。

使用“FlateRed-”运输方法,您需要使用简单的初始成本而不是任何公式来设置参考运输成本。例如可以是1。此费用将由我的答案代码替换,动态基于购物车总重量。

您可能必须在“装运选项”选项卡下的常规装运设置中“启用调试模式”,以临时禁用装运缓存

add_filter('woocommerce_package_rates', 'shipping_cost_based_on_weight', 12, 2);
function shipping_cost_based_on_weight( $rates, $package ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return $rates;

    // HERE define the differents costs
    $cost1 = 5; // Up to 6 Kg
    $cost2 = 9; // Above 6 Kg and below 12 kg
    $cost3 = 9; // Above 12 kg

    // The cart total Weight
    $total_weight = WC()->cart->get_cart_contents_weight();

    // Loop through the shipping taxes array
    foreach ( $rates as $rate_key => $rate ){
        $has_taxes = false;
        // Targetting "flat rate"
        if( 'flat_rate' === $rate->method_id ){
            // Get the initial cost
            $initial_cost = $new_cost = $rates[$rate_key]->cost;

            // Calculate new cost
            if( $total_weight <= 6 ) { // Below 6 Kg
                $new_cost = $cost1;
            }
            elseif( $total_weight > 6 && $total_weight <= 12 ) { // Between 6 and 12 Kg
                $new_cost = $cost2;
            }
            else { // Above 12 Kg
                $new_cost = $cost3;
            }

            // Set the new cost
            $rates[$rate_key]->cost = $new_cost;

            // Taxes rate cost (if enabled)
            $taxes = [];
            // Loop through the shipping taxes array (as they can be many)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $rates[$rate_key]->taxes[$key] > 0 ){
                    // Get the initial tax cost
                    $initial_tax_cost = $new_tax_cost = $rates[$rate_key]->taxes[$key];
                    // Get the tax rate conversion
                    $tax_rate    = $initial_tax_cost / $initial_cost;
                    // Set the new tax cost
                    $taxes[$key] = $new_cost * $tax_rate;
                    $has_taxes   = true; // Enabling tax
                }
            }
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

代码进入函数。活动子主题(或活动主题)的php文件。测试和工作。

测试完成后,不要忘记禁用装运设置中的“启用调试模式”选项。

 类似资料:
  • 本文向大家介绍asp.net基于HashTable实现购物车的方法,包括了asp.net基于HashTable实现购物车的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net基于HashTable实现购物车的方法。分享给大家供大家参考,具体如下: 希望本文所述对大家asp.net程序设计有所帮助。

  • 真实的例子:一位顾客在购物车中购买了以下产品: 产品A,重量:0.2kg,数量:2,装运类别:免费装运 我的客户使用的是一个表费率运输插件,它只能通过使用购物车内容总重量计算运输成本,在这种情况下,它是3.0kg。 但真正的可充电重量只有2.6公斤... 已经到处搜索,找不到任何函数来计算特定装运类别的购物车项目重量小计,因此我们刚刚起草了以下函数,但它似乎不起作用。有人能帮助改进这个功能吗?

  • 如何在woocommerce中将包装重量添加到购物车总重量中? 例如,购物车的总重量为1800 g,包裹重量为400 g,然后shipping插件计算重量为1800 g,但是shipping company使用的包裹的实际重量为2200 g。 那么卖家必须自掏腰包支付这笔额外费用(400克)。 有什么解决办法吗? 如何使用?

  • 我正在跟随Laravel的购物车教程,但即使我已经将他的代码复制到了点子上,它也不像教程中那样工作。每次你点击一个产品时,购物车的数量应该会增加,但事实并非如此。 我正在学习Max Schwarzmueller的“Laravel购物车”教程,您可以在youtube上找到:https://www.youtube.com/watch?v=56TizEw2LgI 我是php、laravel和sessio

  • 购物车 手淘iOS 5.2.5 Android 5.2.7,天猫客户端暂未支持 Tida.cart({ sellerNick: "莱夫箱包旗舰店", itemId: "42828909348", skuId: "73068526031" }, function (data) { alert(JSON.stringify(data)); }); 该接口支持SPI回

  • 购物车类允许项目被添加到session中,session在用户浏览你的网站期间都保持有效状态。这些项目能够以标准的 "购物车" 格式被检索和显示,并允许用户更新数量或者从购物车中移除项目。 请注意购物车类只提供核心的"购物车"功能。它不提供配送、信用卡授权或者其它处理组件。 初始化购物车类 重要:购物车类利用 CodeIgniter 的 Session 类把购物车信息保存到数据库中,所以在使用购物