2016-12-06 11 views
6

私の仮想ストアでは、woocommerceと共にDiviテーマを使用しています。エンドユーザーと私の再販業者の2つのグループがあります。 「購入」ボタンが表示されます。既に私の代理店のためには、 "注文の追加"ボタン(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 get_user_role() { 
    global $current_user; 

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

    return $user_role; 
} 

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から表示されますどうすればいいの?これを信じる?

おかげ

答えて

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。

このコードはテスト済みで、完全に機能しています。

アクティブな子テーマ(またはテーマ)のfunction.phpファイルにコードが入ります。また、任意のプラグインのPHPファイルにもあります。

関連する問題