2016-04-24 7 views
0

特定のロール(店舗マネージャ)を持つユーザーを、選択したWoocommerce設定タブにアクセスさせないように制限する方法を教えてください。 私は同様の質問hereを尋ねましたが、答えはタブが表示されないようにするだけですが、URLを直接入力するとユーザーをページから制限することはありません。woocommerceチェックアウト設定タブから店舗マネージャを制限する

私はこれを理解できないようです。

答えて

1

これは非常にきれいではないですが、それは動作します:

add_filter('woocommerce_settings_tabs_array','remove_setting_tab', 50); 

function remove_setting_tab($settings_tabs) { 
    //Default Tabs are : 
    //array(8) { ["general"]=> string(7) "General" ["products"]=> string(8) "Products" ["tax"]=> string(3) "Tax" ["checkout"]=> string(8) "Checkout" ["shipping"]=> string(8) "Shipping" ["account"]=> string(8) "Accounts" ["email"]=> string(6) "Emails" ["api"]=> string(3) "API" }  
    $user = wp_get_current_user(); 
    if (isset($user->roles[0]) && $user->roles[0] == 'shop_manager') { 
     unset($settings_tabs['general']);// = array(); 
    } 

    return $settings_tabs; 
} 

add_filter('woocommerce_general_settings', 'setting_tab_empty_content'); 
function setting_tab_empty_content($settings){ 
    $user = wp_get_current_user(); 
    if (isset($user->roles[0]) && $user->roles[0] == 'shop_manager') { 
     if ($_SERVER['REQUEST_URI']=='/wp-admin/admin.php?page=wc-settings&tab=general') 
     { 
      die('<strong>No permissions</strong>'); 
     } 
    } 
} 
+1

@loicTheAztec、まず:ので、ダイの(); $ _SERVER ['REQUEST_URI']チェックのために、WP関数の残りの部分が実行されないようにします。チェックする方がより正確でなければなりません。それは絶望的な解決策の回避策です。 –

+0

なぜそれが私のために働いていないのかわかりません。 未設定の部分は問題なく動作しますが、die()によってこのエラーが発生します 警告:C:\ xampp \ hjaocs \ 9ja \ wp-content \ plugins \ woocommerce \ includes \ admin \ class-wcのforeach() -admin-settings.php on line 207 –

関連する問題