Woocommerce-隐藏付款网关“鳕鱼-货到付款”并显示bacs-银行转帐

时间:2020-10-12 14:24:04

标签: php wordpress woocommerce payment-gateway hook-woocommerce

请大家

我在结帐页面上使用两个付款网关:

1°bacs =银行转帐
2°鳕鱼=货到付款

如果用户没有管理员配置文件(!is_user_admin()),||我需要隐藏付款网关 COD =货到付款。或未记录,|| ! is_user_logged_in()然后隐藏。

这是我正在使用的代码,正在运行。

add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_cod_hide' );
  
function bbloomer_cod_hide( $available_gateways ) {
   if ( isset( $available_gateways['cod']) && !is_user_admin() ) {
      unset( $available_gateways['cod'] );
   } 
   return $available_gateways;
}

问题在于...付款网关 bacs =银行转帐也受到影响并隐藏:)

所以我尝试了另一个钩子

add_filter( 'woocommerce_available_payment_gateways', 'transfer_enable_bacs' );
  
function transfer_enable_bacs( $available_gateways ) {
   if ( isset( $available_gateways['bacs']) && !is_user_admin() ) {
      //unset( $available_gateways['bacs'] );
   } 
   return $available_gateways;
}

但这不是正确的解决方案。这两个支付网关都是隐藏的。

我在做什么错了?
感激!

2 个答案:

答案 0 :(得分:1)

我认为您需要将is_user_admin替换为current_user_can

add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_cod_hide' );
      
    function bbloomer_cod_hide( $available_gateways ) {
       if ( isset( $available_gateways['cod'] ) && ! current_user_can( 'administrator' ) ) {
          unset( $available_gateways['cod'] );
       } 
       return $available_gateways;
    }

is_user_admin不检查用户是否为管理员;使用current_user_can()检查角色和功能。

https://developer.wordpress.org/reference/functions/is_user_admin/

答案 1 :(得分:1)

尝试以下代码:

add_filter('woocommerce_available_payment_gateways','bbloomer_cod_hide');

function bbloomer_cod_hide( $available_gateways ) {
   if ( !is_user_logged_in() ) || !current_user_can( 'install_themes' ) ) {
      unset( $available_gateways['cod'] );
   } 
   return $available_gateways;
}