Woocommerce隐藏用户角色的支付网关

时间:2015-06-11 01:27:58

标签: php wordpress woocommerce

嘿伙计们,我在wordpress / woocomerce网站上有货到付款方式,我希望隐藏客户用户角色和未登录用户。

我一直在搜索,我唯一发现的就是这段代码。

function paypal_disable_manager( $available_gateways ) 

{global $woocommerce;

if ( isset( $available_gateways['paypal'] ) && current_user_can('customer') ) {

unset( $available_gateways['paypal'] );

}

return $available_gateways;

}

add_filter( 'woocommerce_available_payment_gateways','paypal_disable_manager' );

是否有人能够帮助我修改此代码以使其适合我的使用。提前谢谢!

2 个答案:

答案 0 :(得分:2)

提及为您试用和测试过的代码。它运作良好。 Lemme知道同样适用于你。

function wdm_disable_cod( $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['cod']) && (current_user_can('customer') || ! is_user_logged_in()) ) {

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

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

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

答案 1 :(得分:2)

<?php
//--- Filter for remove any payment gateway as per the user role selected --
add_filter('woocommerce_available_payment_gateways','filter_gateways',1);
function filter_gateways($gateways){
    global $woocommerce, $current_user;

    if ( is_user_logged_in() ) {        
        $userRole = implode(',',$current_user->roles);
        if($userRole == 'my_user_role'){
            //-- Remove casho on delivery if following user have logged in
            unset($gateways['cod']);        
        }   
    }else{
        //-- Hide COD if user not logged in 
        unset($gateways['cod']);
    }           
 return $gateways;
}
?>

// - 试试这个,我已经针对最小订单限制使用了这个代码