根据 Woocommerce 中选择的运输方式显示隐藏付款方式

2024-01-05

当我在灵活的运输插件表单 wpdesk 中选择指定的“运输方式”时,我想隐藏某些付款方式并启用另一种付款方式。

我已经尝试过该代码:

add_filter( 'woocommerce_available_payment_gateways', 'gateway_disable_shipping_326' );
function gateway_disable_shipping_326( $available_gateways ) {
    global $woocommerce;

    if ( !is_admin() ) {
        $chosen_methods  = WC()->session->get( 'chosen_shipping_methods' );
        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['payment_method_cod'] ) && 0 === strpos( $chosen_shipping, 'flat_rate:6' ) ) {
            unset( $available_gateways['payment_method_cod'] );
        }
    }
    return $available_gateways; 
}

和这个

function my_custom_available_payment_gateways( $gateways ) {
    $chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
    if ( in_array( 'flat_rate:6', $chosen_shipping_rates ) ) :
        unset( $gateways['payment_method_cod'] );
        endif;
    if ( in_array( 'flat_rate:8', $chosen_shipping_rates ) ) :
        unset( $gateways['payment_method_przelewy24'] );
    endif;
    return $gateways;
}

add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );

我的网站链接:[www.dajati.pl][1]


以下代码示例将根据所选的运输方式启用/禁用支付网关。

在此示例中,我们有 3 种运输方式和 3 个支付网关。每种选定的运输方式仅启用一种不同的支付网关。

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method' );
function payment_gateways_based_on_chosen_shipping_method( $available_gateways ) {
    // Not in backend (admin) and Not in order pay page
    if( is_admin() ||  is_wc_endpoint_url('order-pay') ) 
        return $available_gateways;
     
    // Get chosen shipping methods
    $chosen_shipping_methods = (array) WC()->session->get( 'chosen_shipping_methods' );

    if ( in_array( 'flat_rate:12', $chosen_shipping_methods ) )
    {
        unset( $gateways['bacs'] );
        unset( $gateways['cod'] );
    }
    elseif ( in_array( 'flat_rate:14', $chosen_shipping_methods ) )
    {
        unset( $gateways['bacs'] );
        unset( $gateways['paypal'] );
    }
    elseif ( in_array( 'free_shipping:10', $chosen_shipping_methods ) )
    {
        unset( $gateways['cod'] );
        unset( $gateways['paypal'] );
    }

    return $gateways;
}

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

为了能够获取正确的运输方式 ID您可以使用浏览器检查器,如下所示:

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

根据 Woocommerce 中选择的运输方式显示隐藏付款方式 的相关文章

  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 在 PHP 中将 CSV 写入不带括号的文件

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

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • 如何从导出的 csv 文件中删除双引号

    我正在使用 Laravel 5 8 并且添加了 Maatwebsite 包 用于从数据库表导出 CSV 文件 这是我导出的类 class ConfirmedExport implements FromCollection WithHeadi
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d

随机推荐

  • DAX 条件运行总计

    我有一个包含 2 列的表 ID and Numbers 我想创建一个新专栏Result与数字列的运行总计 但每次运行总计超过 20 时 应重新启动运行总计 此外 如果运行总计低于 20 则不应显示结果 这必须仅使用 DAX 来完成 谢谢指教
  • 为什么 Chrome 会向我的网站发送大量 GET 请求?

    我的 IIS 托管网站定期出现问题 其中一个客户端浏览器 Google Chrome 77 78 或更高版本 突然开始每秒向我的网站提交数十个针对同一页面的请求 对于我的应用程序 该用户始终是有效的 经过身份验证的用户 这些请求似乎也不遵循
  • 在 Rails 6 中测试 jquery

    我对编程和测试相当陌生 看看 jquery 是否适用于我的 Rails 6 设置 为了做到这一点 我有 创建了一个新的 Rails 应用程序 生成了一个脚手架 将以下代码插入到新创建的脚手架的index html erb视图中 div st
  • 如何使用 Mojolicious 上传多个文件?

    我是 Mojolicious 的新手 正在尝试学习它 我正在尝试使用表单上传多个文件 但一次仅上传一个文件 有什么建议吗 perl w use Mojolicious Lite use Mojo Upload use v5 14 get g
  • 如何显示使用“withdraw”方法隐藏的窗口?

    我想在打电话后显示一个窗口withdraw 以下是我当前的代码 from Tkinter import def callback global root root withdraw win2 Tk root Tk Label root te
  • 在画布中绘制矩形区域的弹出工具提示

    我有一个在 HTML5 中使用 JavaScript 填充的矩形区域 并且我需要添加一个工具提示弹出窗口 以便当用户在手持设备上触摸 单击它或在浏览器中将鼠标悬停在它上面时显示文本 我已经查看了 StackOverflow 上已有的示例 但
  • Spring Boot 4 不渲染 JSP 抛出 404

    我有以下项目结构 src main java com test Application java controllers MyController java webapp WEB INF jsp main jsp 我想做类似的事情this
  • JDBC Spring 中的错误 Sql 语法异常

    我是得到 org springframework jdbc BadSqlGrammarException 准备语句回调 错误的 SQL 语法 select cid 来自临床医生的临床医生代码 密码 名字 姓氏 临床医生代码 嵌套异常是 co
  • 如何使用 CloudFormation 为特定 Lambda 设置 Lambda 警报?

    这是CloudFormation的结构Alarm from AWS文档 https docs aws amazon com AWSCloudFormation latest UserGuide aws properties cw alarm
  • 如何使用 Google Guava 中的 Throwables.propagateIfInstanceOf()?

    javadoc 示例 http guava libraries googlecode com svn tags release08 javadoc com google common base Throwables html propaga
  • 如何成为一名优秀的Python程序员? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • macOS:向 Cocoa 绑定公开 Swift 属性的正确方法

    我正在 Mac 上开发一个现有的 Swift Objective C 项目 并在代码中创建一些 UI 我根据我管理的 NSTableView 中的选择启用一个按钮without使用 NSArrayController 出于原因 我有一处房产
  • 为什么 as.data.frame 忽略 col.names = vector

    我顽固地尝试在一行中创建一个具有命名行和列的数据框 我意识到我可以通过使用 colnames forecast 轻松地做到这一点 但想简化一下 如果只是为了证明我可以做到这一点 以下不起作用 没有错误 但未设置列名 forecast lt
  • 如何在 iPad 中调整网页大小/重新缩放

    我有一个网站 其移动版本使用 jquery mobile 当我将其从纵向更改为横向时 它会正确放大 但当我翻转到纵向时 它会保持相同的缩放级别 并且比视图更宽 这会破坏用户体验 我使用常规 从我所做的所有搜索来看 这应该可以 不幸的是它不适
  • 处理“超规范化”数据

    我的雇主是一家小型办公用品公司 正在更换供应商 我正在浏览他们的电子内容 以得出一个强大的数据库模式 我们之前的模式几乎是在没有任何思考的情况下拼凑在一起的 这几乎导致了一个令人难以忍受的数据模型 其中包含损坏的 不一致的信息 新供应商的数
  • Laravel 控制器/模型/视图的命名约定是什么?

    我记得听说你应该以特殊的方式命名你的控制器 模型和视图 可以是单数 也可以是复数 我不记得要命名哪些内容 而且我在文档中找不到任何有关它的信息 我猜是这样的 控制器是复数 视图是复数的 模型是单一的 我走在正确的轨道上吗 我知道这只是一个惯
  • 移动时切比雪夫距离 x 坐标错误

    所以我正在复制移相器切比雪夫距离示例 并在解决方案之后here https stackoverflow com questions 75478712 this gamestate variable not recognized phaser
  • 如何在 Django REST Framework 的单元测试期间登录用户?

    这是我的 DRF 视图 api view GET permission classes IsAuthenticated def check user request user request user use user object her
  • mysql中三个表之间的内连接

    我有 3 个表叫做 公司 联系方式 活动 联系人具有公司的外键 公司拥有活动的外键 它们都有一个 名称 列 我需要一个连接表 其中包含联系人姓名 公司名称和活动名称 contact id name company id companies
  • 根据 Woocommerce 中选择的运输方式显示隐藏付款方式

    当我在灵活的运输插件表单 wpdesk 中选择指定的 运输方式 时 我想隐藏某些付款方式并启用另一种付款方式 我已经尝试过该代码 add filter woocommerce available payment gateways gatew