Php 如果优惠券应用于WooCommerce中的购物车,则仅为登录用户显示BACS支付网关

Php 如果优惠券应用于WooCommerce中的购物车,则仅为登录用户显示BACS支付网关,php,wordpress,woocommerce,cart,payment-method,Php,Wordpress,Woocommerce,Cart,Payment Method,我的代码用于为客人和客户隐藏BACS支付网关,但我需要更改它,以便只有当客户/管理员在购物车或结帐时应用称为“食品”的特定优惠券代码时,BACS网关才可用 换句话说:隐藏BACS网关,直到名为FOOD的优惠券应用于购物车或结帐 以下是我的代码: add_filter('woocommerce_available_payment_gateways', 'show_bacs_if_coupon_is_used', 99, 1); function show_bacs_if_coupon_is_use

我的代码用于为客人和客户隐藏BACS支付网关,但我需要更改它,以便只有当客户/管理员在购物车或结帐时应用称为“食品”的特定优惠券代码时,BACS网关才可用

换句话说:隐藏BACS网关,直到名为FOOD的优惠券应用于购物车或结帐

以下是我的代码:

add_filter('woocommerce_available_payment_gateways', 'show_bacs_if_coupon_is_used', 99, 1);
function show_bacs_if_coupon_is_used( $available_gateways ) {

        $current_user = wp_get_current_user();

        if ( isset($available_gateways['bacs']) && (current_user_can('customer'))) {
             unset($available_gateways['bacs']);
             } else if ( isset($available_gateways['bacs']) && !is_user_logged_in())  {
             unset($available_gateways['bacs']);
         }
         return $available_gateways;
}

仅当特定优惠券仅适用于登录用户的购物车时,才显示BACS付款方式(使用
WC\u购物车
get\u applicated\u tuops()
方法):

add_filter('woocmerce_available_payment_gateways','show_bacs_for_specific_applicated_优惠券',99,1);
功能显示特定应用优惠券(可用网关){
if(is_admin())返回$available_gateways;//仅在前端
$优惠券\代码='FOOD';//购物车->申请优惠券(){
未设置($available_gateways['bacs']);
}
返回$available\u网关;
}

代码进入活动子主题(或活动主题)的functions.php文件。已测试并正常工作。

仅当特定优惠券应用于购物车时,才显示BACS付款方法,仅适用于登录用户(使用
WC\u购物车
get\u applicated\u优惠券()
方法):

add_filter('woocmerce_available_payment_gateways','show_bacs_for_specific_applicated_优惠券',99,1);
功能显示特定应用优惠券(可用网关){
if(is_admin())返回$available_gateways;//仅在前端
$优惠券\代码='FOOD';//购物车->申请优惠券(){
未设置($available_gateways['bacs']);
}
返回$available\u网关;
}
代码进入活动子主题(或活动主题)的functions.php文件。测试和工作

add_filter('woocommerce_available_payment_gateways', 'show_bacs_for_specific_applied_coupon', 99, 1);
function show_bacs_for_specific_applied_coupon( $available_gateways ) {
    if ( is_admin() ) return $available_gateways; // Only on frontend

    $coupon_code = 'FOOD'; // <== Set here the coupon code

    if ( isset($available_gateways['bacs']) && ! ( is_user_logged_in() &&  
    in_array( strtolower($coupon_code), WC()->cart->get_applied_coupons() ) ) ) {
        unset($available_gateways['bacs']);
    }
    return $available_gateways;
}