You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce按用户角色隐藏Square支付方式不生效问题求助

解决方案

WooCommerce官方Square支付插件对应的正确网关ID为*square_credit_card*,你代码中使用的square不是正确的索引值,因此隐藏逻辑不生效。

你可以直接将原代码中对应判断的square替换为square_credit_card即可,也可以用更简洁的批量判断逻辑简化代码,避免重复书写条件:

add_filter( 'woocommerce_available_payment_gateways', 'client_pmts_enable_manager' );
  
function client_pmts_enable_manager( $available_gateways ) {
    // 仅对没有店铺管理权限的用户隐藏指定支付方式
    if ( ! current_user_can( 'manage_woocommerce' ) ) {
        // 列入需要隐藏的支付网关ID数组
        $hide_gateways = [ 'bacs', 'cod', 'cheque', 'square_credit_card' ];
        foreach ( $hide_gateways as $gateway_id ) {
            if ( isset( $available_gateways[ $gateway_id ] ) ) {
                unset( $available_gateways[ $gateway_id ] );
            }
        }
    }
    return $available_gateways;
}

如果替换后仍然不生效,你可以用临时调试代码输出所有可用网关的ID,确认你安装的Square插件的实际ID(调试完成后及时删除这段代码):

add_action( 'woocommerce_checkout_init', function() {
    $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
    echo '<pre>';
    print_r( array_keys( $available_gateways ) );
    echo '</pre>';
} );

访问结账页面就能看到所有当前可用支付网关的ID列表,找到Square对应的条目替换即可。

内容的提问来源于stack exchange,提问作者Christopher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:15:03