Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Woocommerce-隐藏支付网关&x201C;货到付款-货到付款”;并显示bacs-银行转账_Php_Wordpress_Woocommerce_Payment Gateway_Hook Woocommerce - Fatal编程技术网

Php Woocommerce-隐藏支付网关&x201C;货到付款-货到付款”;并显示bacs-银行转账

Php Woocommerce-隐藏支付网关&x201C;货到付款-货到付款”;并显示bacs-银行转账,php,wordpress,woocommerce,payment-gateway,hook-woocommerce,Php,Wordpress,Woocommerce,Payment Gateway,Hook Woocommerce,拜托,伙计们 我在结帐页面上使用两个付款网关: 1°bacs=银行转账 2°cod=货到付款 如果用户没有管理员配置文件(!is_user_Admin()),| |或未登录,| |,我需要隐藏支付网关COD=Cash-on-Delivery!是否已登录用户?,然后隐藏 这是我正在使用的代码,它正在工作。 add_filter( 'woocommerce_available_payment_gateways', 'bbloomer_cod_hide' ); function bbloomer

拜托,伙计们

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

1°bacs=银行转账
2°cod=货到付款

如果用户没有管理员配置文件(!is_user_Admin()),| |或未登录,| |,我需要隐藏支付网关COD=Cash-on-Delivery!是否已登录用户?,然后隐藏

这是我正在使用的代码,它正在工作。

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;
}
但这不是正确的解决方案。两个支付网关都是隐藏的

请问我做错了什么?

感谢

我认为您需要用
当前用户\u 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\u user\u admin
不检查用户是否为管理员;使用
当前用户\u can()
检查角色和功能


请尝试以下代码:

添加过滤器('woocommerce'u available'u payment'u gateways'、'bbloomer'u cod'u hide')


非常感谢@Mo'men Mohamed的帮助,但问题仍然存在。付款方法cod是隐藏的,但方法bacs也是隐藏的。:)伙计们,非常感谢你们的帮助。两个Scriptp都很有魅力!正如@Mo'men Mohamed一开始给我的答案,我会给他一个荣誉。但温德尔的剧本通常也是这样。非常感谢大家的关注!!
function bbloomer_cod_hide( $available_gateways ) {
   if ( !is_user_logged_in() ) || !current_user_can( 'install_themes' ) ) {
      unset( $available_gateways['cod'] );
   } 
   return $available_gateways;
}