【问题标题】:Set a custom shipping rate cost calculated on cart total weight in WooCommerce在 WooCommerce 中设置根据购物车总重量计算的自定义运费成本
【发布时间】:2017-08-05 13:04:28
【问题描述】:

在 Woocommerce 中,我安装了一个运输插件,但它计算的是购物车中每件商品的运费,而不是每个订单的总运费。

我需要以这种方式计算运费: - 第一公斤是 5 美元 - 所有其他人每公斤 1 美元。

有可能吗?

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

插件开发人员没有回复我,所以正在寻找解决方法。

【问题讨论】:

  • 你能展示一下你在工作中尝试过的东西吗?
  • 我正在寻求解决方法或解决方案。我要求将代码添加到我的 plugin.php 中,以便将购物车作为合并总数提交。谢谢
  • 哎呀,我的问题怎么了 - 有人编辑了它?我现在无法理解编辑。我想知道如何让我的插件根据购物车中的总重量而不是购物车中的每个产品来计算运费....

标签: php wordpress woocommerce cart shipping


【解决方案1】:

更新:你不需要任何插件(所以你可以删除它)

要获得根据购物车总重量计算的运费,请使用:

  • 初始金额 5 美元(第一公斤)
  • 每增加一公斤,浮动价格为 1 美元

执行以下操作:

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

所以成本

(一旦完成禁用/保存并启用/保存以刷新 woocommerce 瞬态缓存)

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

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;
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

此代码经过测试,可在 woocommerce 版本 2.6.x 和 3+ 上运行

【讨论】:

  • 感谢您的建议。我们使用插件的原因是因为有很多变量可以根据重量和位置计算运费,并提供多种服务,例如隔夜、公路等,这些都是在 API 中定义的 - 不确定是否得到这个正确...
  • 我想插入一张图片,说明当前代码的外观 - 如何插入图片(ctrl G 不起作用..
  • @linda 我你选择了一个插件,你是插件允许你做什么的囚徒。一般来说,这是封闭的。所以使用插件不会让你得到你想要的……在这种情况下没有人会真正帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 2018-02-13
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多