【问题标题】:Set all shipping methods costs to zero based on cart items subtotal in WooCommerce根据 WooCommerce 中的购物车项目小计将所有运输方式成本设置为零
【发布时间】:2021-05-14 03:39:27
【问题描述】:

我的页面上有多种运输方式,并且希望在订单超过 2500 捷克克朗时使它们的成本为零。我只发现代码仅在客户达到免费送货的最低要求时才显示免费送货选项,但这不是我想要的。我想显示所有方法(但价格为零),以便客户仍然可以选择哪种送货方式他希望与他的订单一起交付的公司。 谢谢!

【问题讨论】:

  • 请注意,在 StackOverFlow 中,我们希望您首先搜索、尝试自己并在您的问题中提供您自己的真实代码尝试。我已经非常出色地回答了您的问题,因为我不得不对我所做的现有答案代码进行一些小改动。

标签: php wordpress woocommerce cart shipping-method


【解决方案1】:

基于Set cart shipping total amount issue after Woocommerce update 答案代码,以下是根据特定购物车项目小计使其工作的方法:

add_filter('woocommerce_package_rates', 'null_shipping_costs_conditionally', 10, 2 );
function null_shipping_costs_conditionally( $rates, $package ){
    $threshold_amount = 2500;
    
    if( $package['contents_cost'] >= $threshold_amount ) {
        // Loop through shipping methods rates
        foreach ( $rates as $rate_key => $rate ){
            // Targeting all shipping methods except "Free shipping"
            if ( 'free_shipping' !== $rate->method_id ) {
                $has_taxes = false;
                $taxes = [];
    
                $rates[$rate_key]->cost = 0; // Set cost to 0 (zero)
                // Taxes rate cost (if enabled)
                foreach ($rates[$rate_key]->taxes as $key => $tax){
                    if( $tax > 0 ){
                        $has_taxes = true;
                        $taxes[$key] = 0; // Set tax cost to 0 (zero)
                    }
                }
                if( $has_taxes )
                    $rates[$rate_key]->taxes = $taxes;
            }
        }
    }
    return $rates;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

注意:保存此代码后,不要忘记清空您的购物车以刷新运输缓存数据。

【讨论】:

  • 非常感谢!!最后一件事,如果我想在“免费”的运输方式旁边添加文字怎么办?现在它只删除价格。谢谢!!
  • 首先如果我的回答回答了你最初的问题,你可以请accept回答,谢谢。因此,在以下行之后:$rates[$rate_key]->cost = 0; 在下面添加一个新行,并使用 $rates[$rate_key]->label = __("Here your text", "woocommerce"); 在其中将 Here your text替换为您要显示的文本。
  • 我接受了答案,谢谢。当我尝试插入代码时,它会将两种运输方式都更改为我输入的文本。我想将我的文本放在运输方式旁边 - 例如。 Fedex(免费),而不仅仅是“免费”。
  • @TerezaSadílková 在此评论区无法真正回答或理解... StackOverFlow 的规则当时是一个问题。请先搜索,如果您发现了什么或提出新问题,请自行尝试。
  • 她的意思是这个;她要求在运输标签后添加文本的额外帮助,您提供的答案将标签全部替换,使所有运输选项都称为“这里是您的文本” - 这远非可选。
猜你喜欢
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 2019-09-18
  • 1970-01-01
相关资源
最近更新 更多