【问题标题】:Woocommerce - Hide payment gateway “cod - cash on delivery” and show bacs - Bank TransferWoocommerce - 隐藏支付网关“cod - 货到付款”并显示 bacs - 银行转账
【发布时间】:2021-01-26 21:06:24
【问题描述】:

各位,

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

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

我需要隐藏支付网关COD = 货到付款,如果用户没有管理员配置文件 (!is_user_admin()),||或者它没有被记录,|| ! 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;
}

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

请问我做错了什么?
感谢!

【问题讨论】:

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


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

      我认为您需要将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/

      【讨论】:

      • 非常感谢@Mo'men Mohamed 的帮助,但问题仍然存在。付款方式 cod 已隐藏,但方法 bacs 也已隐藏。 :)
      • 伙计们,非常感谢您的大力帮助。两个脚本都很有魅力!正如@Mo'men Mohamed 一开始给我的答案,我会给他荣誉。但同样的方式通常适用于温德尔的脚本。非常感谢您的关注!!
      猜你喜欢
      • 2018-09-26
      • 2016-02-09
      • 2012-06-19
      • 2015-07-01
      • 2020-01-09
      • 2017-05-31
      • 2019-04-07
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多