2016-12-06 7 views
6

В моем виртуальном магазине с использованием темы Divi вместе с woocommerce у меня есть две группы пользователей: конечные пользователи и мои реселлеры, в случае моего конечного клиента потребуется только появится кнопка «купить». Уже для моих реселлеров только кнопка «добавить в заказ» (предоставляется плагином запроса YITH Request A Quote). В случае сомнений, будет о том, как удалить кнопку Добавить в корзину для посредникам, я знаю, используя код:Удалить в корзину кнопку для определенной роли пользователя в WooCommerce

remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); 
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); 

Я удалить кнопку со всего сайта, но я пытаюсь использовать некоторые вид if, чтобы иметь возможность определять только группу. Что-то вроде этого:

$user = wp_get_current_user(); 
if (in_array('Revenda', (array) $user->roles)) { 
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); 
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); 
} 

или это:

if(current_user_can('revenda')) { 
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); 
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); 
} 

Я также пытаюсь этот код:

function user_filter_addtocart_for_shop_page(){ 
    $user_role = get_user_role(); 
    $role_id = get_role('Revenda'); 
    if($user_role == $role_id){ 
     remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10); 
    } 
} 

Где get_user_role будет отображающее от:

function get_user_role() { 
    global $current_user; 

    $user_roles = $current_user->roles; 
    $user_role = array_shift($user_roles); 

    return $user_role; 
} 

Как я могу Читить это?

Благодаря

ответ

3

правильный код, чтобы сделать то, что вы хотите (Роль пробкового пользователя в нижнем регистре, и я использую get_userdata(get_current_user_id()), чтобы получить данные пользователя.

Так что я немного изменился код:

function remove_add_to_cart_for_user_role(){ 
    // Set Here the user role slug 
    $targeted_user_role = 'revenda'; // The slug in "lowercase" 
    $user_data = get_userdata(get_current_user_id()); 
    if (in_array($targeted_user_role, $user_data->roles)) { 
     remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10); 
     remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); 
    } 
} 
add_action('init', 'remove_add_to_cart_for_user_role'); 

Я встраивать код в функции, запускаемый на init крючок

0.

Этот код проверен и полностью работоспособен.

Код находится в файле functions.php вашей активной дочерней темы (или темы). Или также в любых плагинах php-файлов.