我正在寻找一种方法来禁用购物车和结帐页面上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' );
但那并没有奏效。我做错了什么?
答案 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;