2016-12-06 41 views
6

Trong cửa hàng ảo của tôi bằng chủ đề Divi cùng với woocommerce Tôi có hai nhóm người dùng: người dùng cuối và người bán lại của tôi, trong trường hợp khách hàng cuối của tôi chỉ cần xuất hiện nút "mua". Đã dành cho các đại lý của tôi chỉ có nút “thêm vào đơn đặt hàng” (được cung cấp bởi trình cắm YITH Request A Quote). Trong trường hợp nghi ngờ sẽ làm thế nào để loại bỏ các add vào nút giỏ hàng cho các tài khoản đại lý bán lẻ, tôi biết cách sử dụng mã:Xóa nút thêm vào giỏ hàng cho vai trò người dùng cụ thể trong 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); 

tôi loại bỏ các nút từ toàn bộ trang web, nhưng tôi đang cố gắng sử dụng một số loại if để chỉ có thể xác định nhóm. Something như thế này:

$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); 
} 

hay này:

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); 
} 

Tôi cũng đang cố gắng mã này:

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); 
    } 
} 

đâu get_user_role sẽ được hiển thị từ:

function get_user_role() { 
    global $current_user; 

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

    return $user_role; 
} 

Làm sao tôi có thể chieve this?

Cảm ơn

Trả lời

3

Mã đúng để làm những gì bạn muốn (Người dùng vai trò sên là trong trường hợp thấp hơn và tôi sử dụng get_userdata(get_current_user_id()) để có được những dữ liệu người dùng.

Vì vậy, tôi đã thay đổi một chút mã của bạn:

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'); 

tôi đã nhúng mã trong một chức năng được bắn vào init móc

0.

Mã này được kiểm tra và hoạt động đầy đủ.

Mã đi trong tệp function.php của chủ đề con đang hoạt động của bạn (hoặc chủ đề). Hoặc cũng trong bất kỳ tệp php plugin nào.

Các vấn đề liên quan