禁用 WooCommerce 中特定送货区域的“下订单”按钮

2024-01-17

如果选择了特定的运输类别,我试图停用“下订单”按钮。运输类别的名称是“Zone 6”。

基于"删除特定运输类别的 Woocommerce“下订单”按钮 https://stackoverflow.com/questions/50354331/remove-woocommerce-place-order-button-for-a-specific-shipping-class/50356340#50356340"回答线程,我做了一些更改来处理运输区域:

add_filter('woocommerce_order_button_html', 'remove_order_button_html' );
function remove_order_button_html( $button ) {
    // HERE define your targeted shipping zone
    $targeted_shipping_zone = "Zone 6";
    $found = false;

    // Loop through cart items
    foreach( WC_Shipping_Zones::get_zones() as $shipping_zone ) {
        if( $shipping_zone['data']->get_zone_name() == $targeted_shipping_zone ) {
            $found = true; // The targeted shipping class is found
            break; // We stop the loop
        }
    }

    // If found we remove the button
    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;
}

但这不起作用。设置时$found手动设置为 true 按钮将根据需要停用。我认为其中有一个错误get_zone() lines.

任何帮助表示赞赏。


在您的代码中,您没有获得选定的运输区域,您只是循环遍历每个现有的运输区域,因此您总是获得最后一个。这就是为什么它不起作用。

在下面您将获得正确选择的运输区域名称:

add_filter('woocommerce_order_button_html', 'disable_place_order_button_html' );
function disable_place_order_button_html( $button ) {
    // HERE define your targeted shipping zone
    $targeted_zone_name = "Zone 6";

    // Get the chosen shipping method (if it exist)
    $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping_method  = reset($chosen_shipping_methods);
    $chosen_shipping_method  = explode(':', $chosen_shipping_method );
    $chosen_shipping_zone    = WC_Shipping_Zones::get_zone_by( 'instance_id', end($chosen_shipping_method) );

    // If the targeted shipping zone is found, disable the button
    if( $targeted_zone_name == $chosen_shipping_zone->get_zone_name() ) {
        $style  = 'style="background:Silver !important; color:white !important; cursor: not-allowed !important; text-align:center;"';
        $text   = apply_filters( 'woocommerce_order_button_text', __( 'Place order', 'woocommerce' ) );
        $button = '<a class="button" '.$style.'>' . $text . '</a>';
    }
    return $button;
}

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

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

禁用 WooCommerce 中特定送货区域的“下订单”按钮 的相关文章

  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • Laravel 5.1 中的VerifyCsrfToken.php 第 53 行:(Firefox 浏览器)中出现 TokenMismatchException?

    我试图找出为什么会出现这个错误 即使它是全新安装的 我在我的项目中遇到了这个错误 所以我用谷歌搜索 没有一个答案对我有用 所以我创建了新项目并复制了所有控制器 视图和模型 几个小时后工作正常 再次出现令牌不匹配错误 为什么在 laravel
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 按类别 ID 获取产品

    我正在为 woocommerce 编写一个定价表插件 用户插入带有 woocommerce 产品类别 ID 的短代码 更新页面后 用户可以看到一个包含产品名称和价格列表的表格 我怎样才能获得带有类别ID的产品列表 在下面的代码中 pid是用
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • 将函数中的会话变量传递给 codeigniter 中的助手

    这就是我正在尝试做的事情 这是控制器中的功能 public function get started if test login this gt session gt all userdata this gt load gt view te
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • Laravel 按动态 ID 数组对集合进行排序 [重复]

    这个问题在这里已经有答案了 我有以下 people array 5 2 9 6 11 people collection People find people 但当我倾倒并死去时 people collection集合按 ID ASC 排序
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩

随机推荐

  • 如何获得high_resolution_clock的精度?

    C 11 定义high resolution clock它有成员类型period and rep 但我不知道如何才能得到精确那个时钟的 或者 如果我可能无法达到精确度 我是否可以至少以纳秒为单位得到一个计数最小可表示持续时间刻度之间 可能使
  • 用作异步任务时出现后台服务错误

    我在 Xamarin Android 中有一个后台服务 但问题是我无法将其用作Async方法 它给出一个错误 返回类型必须是 StartCommandResult 以匹配重写成员 Service OnStartCommand Intent
  • XSLT 具有重叠元素?

    所以这篇文章的标题可能有点误导 但这是我能想到的最好的标题 我正在开发一个使用 TEI 进行文本编码的项目 我当前工作的要求之一是编写 XSL 转换以将 XML 编码的文本呈现为 HTML 大多数情况下 没有问题 不过 我对这个问题有点困惑
  • 选择器不区分大小写?

    我正在尝试使用 jQuery 进行 XML 处理 我使用 jQuery 遇到的问题之一是它在处理标签和属性时不区分大小写 例如 考虑以下代码 div div
  • 将术语转换为原子并在 YAP prolog 中保留变量名称

    有没有办法配置 YAP 和 或 SWI prolog 以便它们在任何调用中保留变量名称term to atom 2 例如 当我执行此操作时 term to atom member X 1 2 A 我得到这个答案 A member 13140
  • 如何确定 HTML5 拖放文件上传 API 是否存在(如 FF3.6 中的 API)

    我正在编写一个应用程序 该应用程序应该支持文件的 HTML5 拖 放 API 非常类似于所描述的here https developer mozilla org en Using files from web applications Se
  • dplyr 过滤器不适用于润滑时间格式?

    当试图回答时这个问题 https stackoverflow com questions 46360218 delete all times less than a specified value 我遇到了使用问题filter from d
  • 在后台执行命令

    我正在实现一个迷你 shell 它将模拟真正的 bash shell 我在后台执行命令 例如ls 我的第一个方法如下 不起作用 char execArgs ls NULL execvp ls execArgs 然后我尝试了另一种方法 修改父
  • 如何将多个参数传递到 JavaScript 回调函数中?

    JavaScript 代码 function doSomething v1 v2 blah function SomeClass callbackFunction callbackFuncParameters Array this call
  • Jython 2.5.1:从 Java 调用 __main__ - 如何传入命令行参数?

    我在 Java 中使用 Jython 所以我有一个类似于下面的Java设置 String scriptname com blah myscript py PythonInterpreter interpreter new PythonInt
  • 从元组列表中提取不同的值

    如何从以下元组列表中提取不同值的列表 tuple test 123 test 465 test 8910 test2 123 我想得到一个像这样的列表 different values test test2 现在我想通过这个 键 访问所有值
  • 在运行时填充多维向量

    显然这不起作用 所以代码是错误的 但我该如何修复它呢 据我所知 这整件事可能是错误的 哈哈 但我正在尝试创建一个在运行时创建自身的多维向量 我收到错误 vector subscript out of range include
  • jersey ws 2.0 @suspended AsyncResponse,它有什么作用?

    我正在分析一些 jersey 2 0 代码 我对以下方法如何工作有疑问 Stateless Path mycoolstuff public class MyEjbResource GET Asynchronous does this mea
  • 单例继承

    如何从单例类继承到需要相同功能的其他类 这样的事情有意义吗 乔恩 斯基特写过这个 http codeblog jonskeet uk 2006 01 19 singleton inheritance 一会儿回来 是可以实现的some尽管使用
  • QAbstractItemModel 线程安全

    我的实施QAbstractItemModel正在监听一些事件 并在单独的线程中处理更新 更新的处理可能会导致模型中的布局和 或数据更改 数据本身的存储方式是boost mutex 受到保护 每次通话QAbstractItemModel的接口
  • 如何让输入无线电元素在反应 [material-ui] 中水平对齐?

    在 Material ui 中 无线电组始终垂直列出 有没有办法让它们水平对齐 例如所有单选按钮都在一根水平线上 只需使用row财产 https material ui com api form group props
  • WCF 数据契约与类序列化

    我知道如果我们使用数据契约 我们可以对类有更多的控制 但是 请考虑以下两种情况 DataContract public class Customer DataMember public string CustomerName get set
  • 对目录使用 OpenFileDialog,而不是 FolderBrowserDialog

    我想在我的应用程序中拥有一个文件夹浏览器 但是I don t想要使用FolderBrowserDialog 有几个原因 比如使用起来很痛苦 我想使用标准的 OpenFileDialog 但针对目录进行了修改 举个例子 Torrent htt
  • inotify FD - 为什么是每个用户 ID 的限制而不是每个进程的限制?

    在 Linux 中 进程可以打开的 inotify 实例数量受到每个用户 ID 最大数量的限制 在 proc sys fs inotify max user instances 自然的事情是限制每个进程 例如文件 FD 由于 inotify
  • 禁用 WooCommerce 中特定送货区域的“下订单”按钮

    如果选择了特定的运输类别 我试图停用 下订单 按钮 运输类别的名称是 Zone 6 基于 删除特定运输类别的 Woocommerce 下订单 按钮 https stackoverflow com questions 50354331 rem