在woocommerce中隐藏特定用户角色(批发商)的优惠券字段

时间:2015-06-05 20:16:11

标签: php wordpress woocommerce

我正在寻找一种方法来禁用购物车和结帐页面上WooCommerce批发商的优惠券字段。我正在使用自定义主题,并将WooCommerce基于角色的方法插件与WooCommerce批发定价结合使用。我在functions.php中尝试了以下内容:

// hide coupon field on cart page for wholesale
function hide_coupon_field_on_cart( $enabled ) {

    if( ! current_user_can( 'wholesale_customer' ) && is_cart() ) {
        $enabled = false;
    }

    return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'hide_coupon_field_on_cart' );

// hide coupon field on checkout page for wholesale
function hide_coupon_field_on_checkout( $enabled ) {

    if( ! current_user_can( 'wholesale_customer' ) && is_checkout() ) {
        $enabled = false;
    }

    return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'hide_coupon_field_on_checkout' );

但那并没有奏效。我做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

function woo_get_user_role() {
  global $current_user;
  $user_roles = $current_user->roles;
  $user_role = array_shift($user_roles);
  return $user_role;
}

// hide coupon field on cart page for wholesale
function hide_coupon_field_on_cart( $enabled ) {
  if(woo_get_user_role() =='wholesale_customer' && is_cart() || is_checkout() ) {
    $enabled = false;
  }
  return $enabled;
}
add_filter( 'woocommerce_coupons_enabled', 'hide_coupon_field_on_cart' );

您还可以将两个功能合并为一个。

答案 1 :(得分:0)

试试这个:

 $current_user = wp_get_current_user();
                if ( !($current_user instanceof WP_User) )
                   return true;
                $roles = $current_user->roles;
                foreach($roles as $role){
                    // wholesaler is your role name, not display name
                    if( $role == "wholesaler" ){
                        $isWholesalers = 1;
                    }
                }
                if(!isset($isWholesalers)){
                    return true;
                }
                if(is_cart()/*is_checkout*/ )
                       return false;