我想限制买家只能通过BAC支付高价值的商品,例如超过99件.我想出了以下代码,但它并没有隐藏信用卡支付.对于WooPayments-信用卡/借记卡方法,我不确定$available_gateways['card']中的card值是否正确?

如何纠正?

functions.php

//////////// Restrict payment option to be BACS for high value items
add_filter('woocommerce_available_payment_gateways', 'restrict_bacs_for_high_value_items', 99, 1);
function restrict_bacs_for_high_value_items( $available_gateways ) {
    global $product;

    if ( is_admin() ) return $available_gateways; // Only on frontend

    $product_price = round($product->price);

    if ( isset($available_gateways['card']) && ($product_price > 99) ) {
        unset($available_gateways['card']);
    }
    return $available_gateways;
}

推荐答案

以下代码将仅当购物车(product with a price up to 100)中有高价值商品时,才将付款方式限制为BACS (bank wire):

add_filter('woocommerce_available_payment_gateways', 'restrict_bacs_for_high_value_items', 99, 1);
function restrict_bacs_for_high_value_items( $available_gateways ) {
    // Only on frontend and if BACS payment method is enabled
    if ( ! is_admin() && isset($available_gateways['bacs']) ) {
        // Loop through cart items
        foreach ( WC()->cart->get_cart() as $item ) {
            // If an item has a price up to 100
            if ( $item['data']->get_price() >= 100 ) {
                // Only BACS payment allowed
                return ['bacs' => $available_gateways['bacs']]; 
            }
        }
    }
    return $available_gateways;
}

代码位于您的子主题的unctions.php文件中(或在插件中).经过测试,效果良好.

Php相关问答推荐

此行动未经授权.升级Laravel时

用户信息更新期间Laravel邮箱验证问题

如果活动订阅者的购物车中有订阅项目,则在WooCommerce签出中显示通知

如何在搜索域名时重定向到登陆页?

MySQLi是否在事务错误时删除保存点(并且仅删除保存点)?

Laravel Nova不使用数组键作为筛选器中的选项值

laravel中获取的数据会自动更改时间戳值

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

使用与OpenSSL命令行兼容的AES-256-CTR为大型文件创建php代码OpenSSL加密

允许客户定义特定WooCommerce产品的价格

哪里的表现能更好?

强制客户在注册时 Select WooCommerce角色

htaccess 配置提供静态文件和动态文件

如何处理 Null 上的 array_shift() ?

跟踪通过 WooCommerce 分层定价表插件进行的购买

Laravel路由中的符号在slug中会创建额外的斜杠

将样式文件或脚本引入WordPress模板

password_verify 在 PHP 7.4 中有效,但在 PHP 8.2 中无效

fopen 功能不断向我发送我重新加载网页时已发布的重复版本的表单

Laravel 自定义中间件:ERR_TOO_MANY_REDIRECTS