Php 设置根据购物车总重量计算的自定义运费成本

Php 设置根据购物车总重量计算的自定义运费成本,php,wordpress,woocommerce,cart,shipping,Php,Wordpress,Woocommerce,Cart,Shipping,在Woocommerce中,我安装了一个发货插件,但它计算购物车中每个项目的发货量,而不是每个订单的总发货量 我需要的是这样计算运费: -第一公斤是5美元 -其他的每公斤1美元 有可能吗 使用该插件,如果购物车中有2件物品,每件重量为1公斤,它将计算运费为2 x$5=$10 相反,我需要的是:$5(第一公斤)+$1(额外公斤)=$6(2公斤) 我没有从插件开发人员的反应,所以寻找解决办法 更新:您不需要任何插件(因此您可以删除它) 要获取根据购物车总重量计算的运费,请执行以下操作: 初始金额为

在Woocommerce中,我安装了一个发货插件,但它计算购物车中每个项目的发货量,而不是每个订单的总发货量

我需要的是这样计算运费: -第一公斤是5美元 -其他的每公斤1美元

有可能吗

使用该插件,如果购物车中有2件物品,每件重量为1公斤,它将计算运费为2 x$5=$10
相反,我需要的是:$5(第一公斤)+$1(额外公斤)=$6(2公斤)

我没有从插件开发人员的反应,所以寻找解决办法

更新:您不需要任何插件(因此您可以删除它)

要获取根据购物车总重量计算的运费,请执行以下操作:

  • 初始金额为5美元(第一公斤)
  • 每增加一公斤的可变费率为1美元
请执行以下操作:

1)电子商务中的设置:
对于所有的“统一费率”运输方式(在每个运输区域),设置成本
1
(按公斤计算)

那么成本呢

(完成后,禁用/保存并启用/保存以刷新缓存)

2)自定义代码(由于运输单位成本为每公斤1美元,我们在计算中将4公斤添加到购物车总重量中,以设置正确的成本):

代码位于活动子主题(或主题)的function.php文件或任何插件文件中


这段代码已经过测试,可以在woocommerce 2.6.x和3+版本上使用。

你能展示一下你的变通方法吗?我要求的是变通方法或解决方案。我要求将代码添加到plugin.php中,以便将购物车作为合计提交。谢谢你哦,我的问题怎么了?有人编辑了吗?我现在弄不懂编辑的意思。我想知道如何让我的插件根据购物车中的总重量而不是购物车中的每个产品来计算运费…谢谢你的建议。我们之所以使用插件,是因为有太多的变量可以根据重量和位置来计算运费,提供了多种服务,如过夜、道路等,这些都是在API中定义的-不确定是否正确…我想插入一个当前代码的图像-如何插入图像(ctrl G不起作用。@linda I如果你选择了一个插件,你就会被插件允许你做的事情所束缚。一般来说,这是封闭的。所以使用插件不会让你得到你想要的东西……在这种情况下,没有人会真的帮助你。
add_filter( 'woocommerce_package_rates', 'custom_delivery_flat_rate_cost_calculation', 10, 2 );
function custom_delivery_flat_rate_cost_calculation( $rates, $package )
{
    // The total cart items  weight
    $cart_weight = WC()->cart->get_cart_contents_weight();

    foreach($rates as $rate_key => $rate_values){
        $method_id = $rate_values->method_id;
        $rate_id = $rate_values->id;
        if ( 'flat_rate' === $method_id ) {
            ##  SHIPPING COSTS AND TAXES CALCULATIONS ##
            $rates[$rate_id]->cost = $rates[$rate_id]->cost*($cart_weight+4);
            foreach ($rates[$rate_id]->taxes as $key => $tax){
                if( $rates[$rate_id]->taxes[$key] > 0 ){
                    $tax_cost = number_format( $rates[$rate_id]->taxes[$key]*($cart_weight+4));
                    $rates[$rate_id]->taxes[$key] = $tax_cost;
                }
            }
        }
    }
    return $rates;
}