WooCommerce 中特定运输方式除外的最低订单金额

2023-12-02

在 WooCommerce 中,我使用以下代码来设置最低订单金额:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {

    $minimum = 50; // Hier gibst du den Mindestbestellwert ein
    
    if ( WC()->cart->total < $minimum ) { 
        if( is_cart() ) { 
            wc_print_notice( sprintf( 'Der Mindestbestellwert beträgt %s pro Bestellung. Der aktuelle Bestellwert beträgt %s.' , // Text fuer Warenkorb 
                wc_price( $minimum ), 
                wc_price( WC()->cart->total )
            ), 'error' );
        } else {
            wc_add_notice( sprintf( 'Der Mindestbestellwert beträgt %s pro Bestellung. Der aktuelle Bestellwert beträgt %s.' , // Text fuer Kasse
                wc_price( $minimum ),
                wc_price( WC()->cart->total )
            ), 'error' );
        }
    }
}

现在,如果客户选择“自助取货”(“本地取货运输方式”),我不需要任何最低订单金额。

如何在 WooCommerce 中设置除“本地取货”运输方式之外的最低订单金额?


基于在结账页面获取“免运费”方式的最低订单金额答案代码以及在 WooCommerce 中设置最低订单金额答案代码,以下是设置最低订单金额的正确方法(WooCommerce 中特定运输方式除外):

add_action( 'woocommerce_check_cart_items', 'wc_minimum_required_order_amount' );
function wc_minimum_required_order_amount() {

    // HERE Your settings
    $minimum_amount     = 50; // The minimum cart total amount
    $shipping_method_id = 'local_pickup'; // The targeted shipping method Id (exception)

    // Get some variables
    $cart_total     = (float) WC()->cart->total; // Total cart amount
    $chosen_methods = (array) WC()->session->get( 'chosen_shipping_methods' ); // Chosen shipping method rate Ids (array)

    // Only when a shipping method has been chosen
    if ( ! empty($chosen_methods) ) {
        $chosen_method  = explode(':', reset($chosen_methods)); // Get the chosen shipping method Id (array)
        $chosen_method_id = reset($chosen_method); // Get the chosen shipping method Id
    }

    // If "Local pickup" shipping method is chosen, exit (no minimun is required)
    if ( isset($chosen_method_id) && $chosen_method_id === $shipping_method_id ) {
        return; // exit
    }

    // Add an error notice is cart total is less than the minimum required
    if ( $cart_total < $minimum_amount ) {
        wc_add_notice( sprintf(
            __("The minimum required order amount is %s (your current order amount is %s).", "woocommerce"), // Text message
            wc_price( $minimum_amount ),
            wc_price( $cart_total )
        ), 'error' );
    }
}

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

或者你也可以使用:

add_action( 'woocommerce_checkout_process', 'wc_minimum_required_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_required_order_amount' );
function wc_minimum_required_order_amount() {

    // HERE Your settings
    $minimum_amount     = 100; // The minimum cart total amount
    $shipping_method_id = 'local_pickup'; // The targeted shipping method Id (exception)

    // Get some variables
    $cart_total     = (float) WC()->cart->total; // Total cart amount
    $chosen_methods = (array) WC()->session->get( 'chosen_shipping_methods' ); // Chosen shipping method rate Ids (array)

    // Only when a shipping method has been chosen
    if ( ! empty($chosen_methods) ) {
        $chosen_method  = explode(':', reset($chosen_methods)); // Get the chosen shipping method Id (array)
        $chosen_method_id = reset($chosen_method); // Get the chosen shipping method Id
    }

    // If "Local pickup" shipping method is chosen, exit (no minimun is required)
    if ( isset($chosen_method_id) && $chosen_method_id === $shipping_method_id ) {
        return; // exit
    }

    // Add an error notice is cart total is less than the minimum required
    if ( $cart_total < $minimum_amount ) {
        $text_notice = sprintf(
            __("The minimum required order amount is %s (your current order amount is %s).", "woocommerce"), // Text message
            wc_price( $minimum_amount ),
            wc_price( $cart_total )
        );
        
        if ( is_cart() ) {
            wc_print_notice( $text_notice, 'error' );
        } else {
            wc_add_notice( $text_notice, 'error' );
        }
    }
}

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

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

WooCommerce 中特定运输方式除外的最低订单金额 的相关文章

  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • Laravel 5.1 中的VerifyCsrfToken.php 第 53 行:(Firefox 浏览器)中出现 TokenMismatchException?

    我试图找出为什么会出现这个错误 即使它是全新安装的 我在我的项目中遇到了这个错误 所以我用谷歌搜索 没有一个答案对我有用 所以我创建了新项目并复制了所有控制器 视图和模型 几个小时后工作正常 再次出现令牌不匹配错误 为什么在 laravel
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • PHP文件上传

    如果我想在文件名转到服务器的永久位置 而不是临时位置 之前更改文件名 我该如何执行此操作 代码如下
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将

随机推荐

  • 如何处理与 Google 游戏服务的断开连接?

    我使用 Google 游戏服务作为排行榜 像这样显示它 static public void showLeaderboard String lid if isLogined 1 Log i TAG Showing leaderboard I
  • 使用 awk 或 sed 解析来自 ifconfig 的数据?

    我正在尝试使用 sed 解析 ifconfig 输出中的一些数据 但我无法正确执行此操作 我希望该命令只提取我想要的数字 例如 我有兴趣提取发送的字节 eth1 Link encap Ethernet HWaddr 00 00 00 09
  • CUDA 支持的 Windows 编译器

    我是一个正在尝试入门的 CUDA 程序员新手 我在 5 5 版本中遇到了这里提到的问题 Visual Studio 2010 Express 中 CUDA 5 5 出现 干净 错误 谁能确认这只是 5 5 版本的问题吗 是否有我可以安装的早
  • Firebase 推送通知添加操作按钮

    我正在服务器端发送推送通知 并且我正在使用这个 http 协议 https firebase google com docs cloud messaging http server ref 并且我想添加像这样的操作按钮https githu
  • 函数未定义

    我的 jquery 脚本出现函数未定义错误 我不知道为什么 jQuery 代码 http maps google com maps file api v 2 key ABQIAAAAhTrgZ5jvdqcEQouEpPcZ hS81NmJw
  • 如何通过CSS或javascript给句子赋予句首字母? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何通过CSS或javascript给句子赋予句首字母 我已经尝试过这些 CSS 属性
  • 为 jax rs 客户端设置超时

    我想为 jax rs 客户端设置连接超时 ClientConfig configuration new ClientConfig configuration property ClientProperties CONNECT TIMEOUT
  • 将 GestureOverlayView 添加到我的 SurfaceView 类,如何添加到视图层次结构?

    在后来的回答中我被告知 我必须将我在代码中创建的 GestureOverlayView 添加到我的视图层次结构中 但我并不 100 知道如何做到这一点 以下是为了完整性而提出的原始问题 我希望我的游戏能够识别手势 我有一个很好的 Surfa
  • iOS 中的后台录音

    我广泛搜索了有关如何在后台录制音频的文档 并得出结论 在 plist 文件中指定 音频 可能有效 但是 由于 iOS 4 在内存不足时会终止后台应用程序 因此当我们转换到后台时 我们还必须采取一些措施来减少内存使用量 我们如何减少内存使用
  • 在 pycrypto 中使用 RSA 的致盲因子

    在Python中 我试图对消息进行盲化和取消盲化 当我取消隐藏消息时 我没有收到原始消息 有谁知道我可能做错了什么 以下是我的代码 s Hello loadedPublic get publickey loadedPrivate get p
  • SQLite 和自定义排序依据

    我有一个包含类别的表 ID Category 1 Baking 3 Family 4 Entertaining 5 Children 6 Desserts 现在我想将 select 语句的结果排序为 ID Category 4 Entert
  • 使用c#将一个字节数组插入到另一个字节数组的特定位置

    这可能是一个愚蠢的问题 但尚未找到简单的答案 我正在尝试将一个简单的 C 字节数组插入到另一个字节数组的特定位置 例如 现有字节不应被覆盖 而应向后移动 真的就像您在现有文本块中复制页面某些文本块一样 到目前为止 我将创建一个具有两个现有数
  • jQuery SlideToggle 一次一个 div 而不是全部独立

    我使用下面的函数来切换 div 通过它 任何一个条目内容 div 都可以独立打开或关闭 如果任何时候只打开一个条目内容 div 那就太好了 单击关闭的条目标题 div 将关闭任何其他条目内容 div 然后打开单击的条目 我需要保留 html
  • 如何通过 javax.xml.ws.Service 进行调用

    在 Eclipse 中创建了一个新的标准 java 7 项目 并成功获得了一个实例javax xml ws Service像这样 String wsdlURL http example com 3000 v1 0 foo bar SomeS
  • hiveconf 变量可以从文件加载吗? (与 HiveQL 文件分开)

    我经常有一大块 HiveQL 我想使用某些变量的不同设置来运行多次 一个简单的例子是 set mindate 2015 01 01 00 00 00 set maxdate 2015 04 01 00 00 00 select from m
  • 二维数组java中的最小值和最大值

    我想输出二维数组的最大值和最小值 Max 效果很好 但即使数组中没有零 min 也始终输出零 我设置Math random 到 99 以防止在此示例中数组中出现零的可能性较小 完整代码如下 public class e public sta
  • 从终端创建项目时 Gitlab 默认项目可见性

    每当我开始一个新项目时 我都会将其添加到我的 Gitlab VCS 本地 中 git init git add git commit m Commit message git remote add origin gi email prote
  • Ghostscript - PS 到 PDF - 反转图像问题

    我正在尝试使用 Ghostscript 将 postscript 转换为 PDF 一切都可以正常转换 除了在某些情况下图像由于某种原因被反转 报告的错误信息 http bugs ghostscript com show bug cgi id
  • 如何通过提供/应答从两个对等连接交换流

    我正在尝试设置视频聊天 其中两个对等连接交换视频 创建数据通道后会发生这种情况 那么事件的流程是这样的 offerer创建数据通道 offerer创造并提供 answerer创建一个答案 到目前为止 一切都很好 我们有一个数据通道 offe
  • WooCommerce 中特定运输方式除外的最低订单金额

    在 WooCommerce 中 我使用以下代码来设置最低订单金额 add action woocommerce checkout process wc minimum order amount add action woocommerce