Php 反转此函数,使其仅限于1个用户角色

Php 反转此函数,使其仅限于1个用户角色,php,wordpress,user-roles,Php,Wordpress,User Roles,我一直在寻找解决办法,但似乎找不到。我想让一个支付网关只对一个用户角色可用,但我只能找到这段代码。有谁能帮我想出一个主意,除了防止未登录的用户使用外,如何编写只允许我的4个不同用户角色中的1个使用此功能的内容 function wdm_disable_woocommerce_gateway_purchase_order( $available_gateways ) { //check whether the avaiable payment gateways have Cash on deli

我一直在寻找解决办法,但似乎找不到。我想让一个支付网关只对一个用户角色可用,但我只能找到这段代码。有谁能帮我想出一个主意,除了防止未登录的用户使用外,如何编写只允许我的4个不同用户角色中的1个使用此功能的内容

function wdm_disable_woocommerce_gateway_purchase_order( $available_gateways ) {

//check whether the avaiable payment gateways have Cash on delivery and user is not logged in or he is a user with role customer
if ( isset($available_gateways['woocommerce_gateway_purchase_order']) && (current_user_can('customer') || ! is_user_logged_in()) ) {

    //remove the cash on delivery payment gateway from the available gateways.

     unset($available_gateways['woocommerce_gateway_purchase_order']);
 }
 return $available_gateways;
}

add_filter('woocommerce_available_payment_gateways', 'wdm_disable_woocommerce_gateway_purchase_order', 99, 1);

如果只允许具有特定用户角色的登录用户,只需更改您发布的代码段中的逻辑:

if ( isset($available_gateways['woocommerce_gateway_purchase_order']) && (!is_user_logged_in() || !current_user_can('customer')) ) {
    unset($available_gateways['woocommerce_gateway_purchase_order']);
}
这将为以下用户删除网关:

  • 没有登录
  • 已登录,但不是客户

  • 只需将
    customer
    更改为您首选的用户角色或功能。

    如果只允许具有特定用户角色的登录用户,只需更改您发布的代码段中的逻辑即可:

    if ( isset($available_gateways['woocommerce_gateway_purchase_order']) && (!is_user_logged_in() || !current_user_can('customer')) ) {
        unset($available_gateways['woocommerce_gateway_purchase_order']);
    }
    
    这将为以下用户删除网关:

  • 没有登录
  • 已登录,但不是客户
  • 只需将
    customer
    更改为您首选的用户角色或功能