WooCommerce 基于动态最低订单金额的费用

2023-12-01

我需要在购物车中设置最低订单费用,因此如果购物车中的产品总计不超过 10 英镑,则需要支付额外费用才能将价格提高到 10 英镑。

这是我目前拥有的代码,该代码在购物车阶段运行良好,但是当您到达结帐时,定价部分由于某种原因不会停止加载,并且您无法结帐,有人可以帮忙吗?

来自functions.php的代码:

function woocommerce_custom_surcharge() {
  global $woocommerce;
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
    $minimumprice = 10;
    $currentprice = $woocommerce->cart->cart_contents_total;
    $additionalfee = $minimumprice - $currentprice;
    if ( $additionalfee >= 0 ) {
        wc_print_notice(
            sprintf( 'We have a minimum %s per order. As your current order is only %s, an additional fee will be applied at checkout.' ,
                wc_price( $minimumprice ),
                wc_price( $currentprice )
            ), 'error'
        );
        $woocommerce->cart->add_fee( 'Minimum Order Adjustment', $additionalfee, true, '' );
    }
}
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );

增强型和updated2019 年 5 月。

您面临的无限加载旋转问题是由于wc_print_notice()当它用在woocommerce_cart_calculate_fees钩。这似乎是一个错误。

如果你使用wc_add_notice(),问题就消失了但该通知显示了2次。

另外我重新审视了你的代码。唯一的解决方案就是把它分成两个独立的函数(还有第三个用于消息):

// Add a custom fee (displaying a notice in cart page)
add_action( 'woocommerce_cart_calculate_fees', 'add_custom_surcharge', 10, 1 );
function add_custom_surcharge( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_cart_calculate_fees' ) >= 2 )
        return;

    $min_price     = 100; // The minimal cart amount

    $current_price = $cart->cart_contents_total;
    $custom_fee    = $min_price - $current_price;

    if ( $custom_fee > 0 ) {
        $cart->add_fee( __('Minimum Order Adjustment'), $custom_fee, true );

        // NOTICE ONLY IN CART PAGE
        if( is_cart() ){
            wc_print_notice( get_custom_fee_message( $min_price, $current_price ), 'error' );
        }
    }
}

// Displaying the notice on checkout page
add_action( 'woocommerce_before_checkout_form', 'custom_surcharge_message', 10 );
function custom_surcharge_message(  ) {
    $min_price     = 100; // The minimal cart amount

    $cart          = WC()->cart;
    $current_price = $cart->cart_contents_total;
    $custom_fee    = $min_price - $current_price;

    // NOTICE ONLY IN CHECKOUT PAGE
    if ( $custom_fee > 0 ) {
        wc_print_notice( get_custom_fee_message( $min_price, $current_price ), 'error' );
    }
}

// The fee notice message
function get_custom_fee_message( $min_price, $current_price ) {
    return sprintf(
        __('We have a minimum %s per order. As your current order is only %s, an additional fee will be applied.', 'woocommerce'),
        wc_price( $min_price ),
        wc_price( $current_price )
    );
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WooCommerce 基于动态最低订单金额的费用 的相关文章

随机推荐

  • 带seaborn的条形图,按行着色

    我创建了一个组合条形图 无法按行着色 我尝试了色调 颜色 调色板 库的所有组合 但没有成功 我的代码是 fig axes plt subplots 1 5 figsize 11 8 my new color UA white AA blue
  • 尽管已安装,JavaFX PieChart 工具提示仍不显示

    我尝试为 PieChart 的每个 切片 显示一个工具提示 与 Chart js 中的类似 I found 这个答案基本上试图在相同的框架中实现相同的目标 它有两个赞成票 从其他 已接受的 答案来看 这似乎也适用于其他图表类型 然而 从没有
  • 如何从 Xcode 中的 uipicker 获取所选时区的日期和时间

    我正在尝试在标签或文本字段中显示 uipicker 中选定时区的日期和时间 但我没有任何方法来解决此问题 所以请任何人帮助我 提前致谢 SelectedTimeZone 权重objectAtIndex pickerView selected
  • 为所有视图提供额外的上下文

    我正在使用 django 为我的团队构建一个项目管理网站 我的基本模板包括一个侧边栏菜单 其中包含所有项目和用户的列表 链接到DetailView分别针对该用户或项目 我的问题是我需要提供User and Project模型到每个视图 以便
  • 子边距为父边距添加边距

    如果我有以下代码怎么办 HTML section class home section section class main h1 Hello h1 section CSS代码 html body height 100 width 100
  • Freemarker/Velocity - 日期操作

    我对这两个模板引擎有一个相当简单的问题 我正在尝试确定一个未来 过去的日期 从现在开始的固定时间 例如18个月前 或者明天 我知道可以使用velocity freemarker模板中的java日期对象来做到这一点 类似于 date add
  • 如何在 C# 中将 lambda 表达式作为参数传递

    我是使用 lambda 表达式的初学者 我有一个经销商名单 我必须为每个经销商计算等级 要求是将等级计算分成单独的方法 所以我正在编写以下两个方法 但是我无法将参数传递给CalculateGrade method public IEnume
  • 如何制作 Parse.Query.AND?

    我需要用 and 连接 Parse com 中的 2 个查询 我的代码是 var queryDeseo1 new Parse Query DeseosModel queryDeseo1 equalTo User Parse User cur
  • 使用“order”属性在同级之间定位弹性项目

    我有一个包含一到三个弹性项目的弹性盒 正确的布局应该是这样的 div div h2 h2 div div 在包含的弹性框中 我有代码可以完成这项工作 请参阅this 仅当布局顺序保持不变时 我的问题是 如何有办法确保 如果标记并不总是按该顺
  • 如何在RecyclerView和ViewPager上解决捕捉功能时获取即将选择的页面

    背景 ViewPager在执行一些滚动后捕捉到视图 因此可以RecyclerView 如果你使用这样的东西 LinearSnapHelper attachToRecyclerView recyclerView 或者通过使用库捕捉到某个边缘
  • 负载平衡、AJAX 和您

    如果您是 Asp Net MVC 环境中的异步 javascript 调用 并且必须使用循环方式的负载均衡器 您能找到回家的路吗 编辑 添加说明 使用内存中会话状态 我会使用粘性会话配置负载均衡器以避免此问题 通过粘性会话 您将在会话期间一
  • 首次加载时显示的 Azure AD B2C 自定义 UI 错误标签

    我有一个 Azure AD B2C 租户 我创建了一个 默认 SignUpAndSignInPolicy 并为登录页面 注册页面和重置密码页面添加了自定义 UI 模板 一切正常 除了在注册页面和重置密码页面上 表单输入字段在初始加载时始终标
  • 合并所有其他数组 php

    数组一 1 3 5 7数组二 2 4 6 8 我想要的数组是1 2 3 4 5 6 7 8 我只是用数字作为例子 如果只是数字 我可以合并和排序 但它们将是单词 所以也许像 数组一 bob a awesome 数组二 is really d
  • 从 .NET 连接到 LDAP 服务器

    我被推荐使用System DirectoryServices Protocols能够支持连接到 Active Directory 以外的 LDAP 服务器here 不幸的是 我无法正确搜索该目录 我希望能够获得用户的某个属性 例如mail
  • 如何以编程方式启用服务菜单,而无需用户注销,然后在键盘首选项中启用它?

    正如标题所言 请大家帮忙 您需要在每个服务的字典中包含 NSRequiredContext 键 文档没有提到这一点 但从 Mac OS X 10 6 开始是必需的 如您所见 如果您没有服务 默认情况下您的服务将被禁用 您还应该致电the N
  • 实体框架。需要帮助过滤结果

    需要在实体框架中选择数据 但需要对子孙进行过滤 我有4张桌子 Parent gt Child gt GrandChild gt GreatGrandChild我想返回所有的父母 但过滤掉孩子和曾孙 换句话说 例如 SELECT Parent
  • 如何专门化枚举和特定类型的模板函数?

    我目前有一个功能 template
  • 如何禁用元素上的所有样式?有什么属性可以一次性将元素的所有属性设置为无?

    我在我的页面中嵌入了 telerik 的 radEditor 它从母版页继承了 css 属性 就像 H2 是蓝色的 它有背景颜色 我应该在我的自定义 css 类 专门为 radEditor 制作的类 中输入什么 以便它覆盖所有母版页的 cs
  • 带有express.js的静态文件

    我想服务index html and media子目录作为静态文件 索引文件应同时提供于 index html and URLs I have web server use media express static dirname medi
  • WooCommerce 基于动态最低订单金额的费用

    我需要在购物车中设置最低订单费用 因此如果购物车中的产品总计不超过 10 英镑 则需要支付额外费用才能将价格提高到 10 英镑 这是我目前拥有的代码 该代码在购物车阶段运行良好 但是当您到达结帐时 定价部分由于某种原因不会停止加载 并且您无