删除特定运输类别的 Woocommerce“下订单”按钮

2023-11-29

我有一个场景,我需要删除 Woo-commerce 结帐屏幕上的“下订单”按钮。

目前我有两种运输方式:灵活运输和货运。

如果客户将运输类别为“货运”的商品添加到购物车,我当前的代码将禁用灵活的运输方法,然后货运方法会显示一条“致电了解当前费率”的消息。

问题是,他们基本上仍然可以结帐,而无需支付任何运费,这就是为什么如果货运是唯一可用的运输方式,我需要删除或更换下订单按钮。

这是我当前正在使用并尝试修改但未成功的代码:

add_filter( 'woocommerce_package_rates', 'wc_hide_free_shipping_for_shipping_class', 10, 2 );

function wc_hide_free_shipping_for_shipping_class( $rates, $package ) {
    $shipping_class_target = 332; 
    $in_cart = false;

    foreach( WC()->cart->cart_contents as $key => $values ) {
        if( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) {
$in_cart = true;
break;
        } 
    }
    if( $in_cart ) {
        unset( $rates['flexible_shipping_7_2'] );
    }
    return $rates;
}

有一个简单的钩子还是我缺少的东西?

我已经搞乱这个有一段时间了并且碰壁了。


请尝试以下操作,当在购物车商品中找到特定的运输类别时,这将输出非活动的灰色“下订单”订单按钮:

add_filter('woocommerce_order_button_html', 'inactive_order_button_html' );
function inactive_order_button_html( $button ) {
    // HERE define your targeted shipping class
    $targeted_shipping_class = 332;
    $found = false;

    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item ) {
        if( $cart_item['data']->get_shipping_class_id() == $targeted_shipping_class ) {
            $found = true; // The targeted shipping class is found
            break; // We stop the loop
        }
    }

    // If found we replace the button by an inactive greyed one
    if( $found ) {
        $style = 'style="background:Silver !important; color:white !important; cursor: not-allowed !important;"';
        $button_text = apply_filters( 'woocommerce_order_button_text', __( 'Place order', 'woocommerce' ) );
        $button = '<a class="button" '.$style.'>' . $button_text . '</a>';
    }
    return $button;
}

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

enter image description here


要完全删除“下订单”按钮,您将使用类似的方法:

add_filter('woocommerce_order_button_html', 'remove_order_button_html' );
function remove_order_button_html( $button ) {
    // HERE define your targeted shipping class
    $targeted_shipping_class = 332;
    $found = false;

    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item ) {
        if( $cart_item['data']->get_shipping_class_id() == $targeted_shipping_class ) {
            $found = true; // The targeted shipping class is found
            break; // We stop the loop
        }
    }

    // If found we remove the button
    if( $found )
        $button = '';

    return $button;
}

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

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

删除特定运输类别的 Woocommerce“下订单”按钮 的相关文章

随机推荐

  • pandas DataFrame 中的波浪号符号

    我是 python pandas 新手 遇到了一个代码片段 df df df InvoiceNo str contains C 如果我能知道波浪号在这种情况下的用法 我将非常感激 这意味着按位非 反转布尔掩码 Falses to Trues
  • MySQL 8.0 - 客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

    由于某种原因 我无法与服务器建立简单的连接 我使用默认设置安装了最新的 MySQL Community 8 0 数据库以及 Node JS 这是我的node js代码 var mysql require mysql var con mysq
  • 无法在页面中央显示我的导航菜单

    导航菜单未居中 我尝试了很多让它居中的方法 但没有任何效果 HTML div li a href index html Home a li li a href servicii html Servicii a li li a href po
  • 将 datagridview 从一种窗体传递到另一种 c#

    我想将我的 datagridview 从 form1 传递到 form2 我尝试使用构造函数但没有结果 第二个表单中的 datagridview 为空 有人可以帮助我吗 我已经堆积了好几个小时了 我不使用 sql 也不需要使用 dataTa
  • 如何将我的应用程序限制为单个浏览器选项卡?

    坦率地说 在 v1 0 中 需要提交三个表单的功能会带来太多麻烦 SESSION会话数据保存所有中间内容 只是让用户启动一个操作 然后打开第二个选项卡并执行第二个操作 该操作会破坏会话数据 我怀疑这是恶意的 但不能否认 更有可能的是 用户开
  • Geochart 用独特的颜色填充国家/地区,并用其颜色作为图例显示国家/地区名称 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要用列表中指定的唯一颜色填充每个国家 并显示国家名称及其颜色作为地图下面的图例 如随附的图像所示 任何帮助将不胜感激
  • 如何确定 ms sql server 2005 中打开/活动连接的总数

    我的 PHP MS Sql Server 2005 win 2003 应用程序有时会变得非常无响应 内存 CPU 使用率不会飙升 如果我尝试从 sql management studio 打开任何新连接 那么它只会挂在打开的连接对话框中 如
  • 什么是 AndroidX?

    我正在阅读有关 Android 房间库的内容 我看到他们改变了包裹android to androidx 我不明白 有人可以解释一下吗 implementation androidx room room runtime room versi
  • 无法将“In-Reply-To”参数传递给 Microsoft Graph sendMail

    我允许用户使用 Microsoft Graph API 使用 Outlook 帐户发送电子邮件 但它似乎在另一端创建多个线程 当使用 Mailgun API 发送用户电子邮件时 我能够传递引用前一条消息 Message ID 的 In Re
  • 如何估计 Pandas 的 DataFrame 需要多少内存?

    我一直在想 如果我正在将一个 400MB 的 csv 文件读取到 pandas 数据帧中 使用 read csv 或 read table 有什么方法可以猜测这将需要多少内存 只是想更好地感受数据帧和内存 df memory usage 将
  • 从 Clojure 记录返回普通地图

    我有一个记录 defrecord Point x y def p Point 1 2 现在我想从记录中提取地图 这些方法可以完成工作 这些是好方法吗 还有更好的方法吗 into concat p into map identity p ap
  • 正则表达式计算字符串中逗号的数量

    如何构建一个正则表达式来匹配包含任意字符但必须包含 21 个逗号的任意长度的字符串 21 That is Start of string Start of group Any character except comma zero or m
  • 为什么使用Intent.createChooser()?

    我找到了一些发送电子邮件的代码 它看起来像这样 startActivity Intent createChooser emailIntent Email 我把它改为 startActivity emailIntent 结果在我的设备上显示相
  • 如何在 Google App Engine 中导入模块?

    我根据默认模板创建了一个简单的 GAE 应用程序 我想添加一个外部模块 例如短网址 我该怎么做呢 到目前为止 我发现的方向令人困惑 而且我猜 GAE 似乎没有使用 PYTHONPATH 原因很明显 只需将short url py文件位于应用
  • 用户取消基本身份验证后出现空白页面

    我用谷歌搜索了很多关于这个问题的信息 但仍然没有找到为什么会发生这种情况 当用户在浏览器中取消 BASIC 身份验证表单时 会出现空白页面 401页面是在Tomcat webapp中设置的 在Firebug中我可以看到401未经授权 也许响
  • 具有多个输入的 Keras 序列模型

    我正在制作一个 MLP 模型 它接受两个输入并产生一个输出 我有两个输入数组 每个输入一个 和 1 个输出数组 该神经网络有 1 个隐藏层和 2 个神经元 每个数组有 336 个元素 model0 keras Sequential kera
  • Firebase - 云功能 - 对集合进行查询

    假设我有两个包含用户和故事的顶级集合 现在每次用户的文档得到更新 只有值username or photoUrl 我想更新故事集合中文档的这些属性 一个用户文档可能如下所示 缩短 username blubber photoUrl my p
  • 在android中访问.sqlite数据库(>1Mb大小)

    我正在开发一个图书馆应用程序 并将书籍存储为 sqlite 文件 每本书的sqlite数据库文件大小约为10MB 我首先尝试将其放入资产文件夹中 然后将其复制到数据库 文件夹中 但由于文件 gt 1Mb 这给了我一个 IOException
  • MS Access 字段作为列

    如何在 MS Access 中进行查询 以便将字段分组到列中 通过例子更容易解释 Table Brand Quantity Date 1 MTZ 3 2012 03 2 MTZ 1 2012 03 3 Belor 2 2012 04 4 Y
  • 删除特定运输类别的 Woocommerce“下订单”按钮

    我有一个场景 我需要删除 Woo commerce 结帐屏幕上的 下订单 按钮 目前我有两种运输方式 灵活运输和货运 如果客户将运输类别为 货运 的商品添加到购物车 我当前的代码将禁用灵活的运输方法 然后货运方法会显示一条 致电了解当前费率