Woocommerce - 仅对管理员用户显示付款方式“货到付款”

问题描述 投票:0回答:2

拜托,

我如何在 Woocommerce 上设置付款方式“货到付款”仅适用于管理员配置文件用户

这可能吗?

这意味着,付款方式“货到付款”将在结帐页面上可用,仅适用于登录 WP 并具有管理员配置文件的用户。

感谢您的帮助!

wordpress woocommerce hook-woocommerce custom-fields meta-boxes
2个回答
1
投票

是,但有

woocommerce_available_payment_gateways
和一个条件
is_user_admin()

示例

// define the woocommerce_available_payment_gateways callback 
function filter_woocommerce_available_payment_gateways( $available_gateways ) { 
    $delete = false;
    foreach ($available_gateways as $key => $gateway) {
        if($gateway === [[[[payment on delivery]]]] && !is_user_admin()){
            unset($available_gateways[$key]);
            break;
        }
    }
    return $available_gateways; 
}; 
         
// add the filter 
add_filter( 'woocommerce_available_payment_gateways', 'filter_woocommerce_available_payment_gateways', 10, 1 );

1
投票

我可以通过将 Sco 的代码调整为以下内容来使其工作:

    // remove certain payment options if not logged in as staff
    public function checkout_limit_payment_methods($available_gateways){
    $delete = false;
    foreach ($available_gateways as $key => $gateway) {
        if($key === "bacs" || $key === "cheque" && !is_user_admin()){
                    if ( is_user_logged_in() ) {
                        $user = wp_get_current_user();
                        $allowed_roles = array( 'shop_manager', 'editor', 'administrator', 'author' );
                        if ( !array_intersect( $allowed_roles, $user->roles ) ) {
                        // delete payment methods for any user without roles in array
                unset($available_gateways[$key]);
                        }
                    } else {
                    // delete payment methods for any user not logged in
            unset($available_gateways[$key]);
            }
                }
    }
    return $available_gateways; 
    }
© www.soinside.com 2019 - 2024. All rights reserved.