web-dev-qa-db-ja.com

Wordpressで役割ごとに管理メニューを非表示にする

クライアント用に一定量のメニューを隠そうとしています。今、私は次のコードを使用していて、それはその仕事をうまくやっています、しかし私が言うことができる限りそれは皆のためにそれを取り除きます。すべての役割におけるように。

function remove_menus () {
global $menu;
    $restricted = array(__('Dashboard'), __('Media'), __('Links'),      __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Profile'),__('Plugins'));
    end ($menu);
    while (prev($menu)){
        $value = explode(' ',$menu[key($menu)][0]);
        if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
    }
}
add_action('admin_menu', 'remove_menus');

私がこれを編集者や作者などだけを呼び出すために使用する行は何ですか?

どうもありがとう

2
user3218

あなたはこれをすることができます、それは能力に基づいて、メニューを隠します(それがすべてである、彼らがそれを知っていれば彼らはまだメニューURLに行くことができます)。あなたは簡単にroleあるいはusernameにさえそれを変えることができます。

ユーザーロールは "user_role"、ユーザー名は "user_login"です。以下の例では、管理者以外の全員を意味する10の "user_level"を使用しています。

function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_level < 10)
    {
        $restricted = array(__('Pages'),
                            __('Media'),
                            __('Links'),
                            __('Custom Post Name'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Users'),
                            __('Tools'),
                            __('Settings'),
                            __('Posts'),

        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }// end while

    }// end if
}
add_action('admin_menu', 'remove_menus');
4
Wyck

Unsetループを通過する前に、current_user_can()関数を使用して、その$restricted配列を分割して構築します。機能させるには、ロール名ではなく機能を使用する必要があります。

2
Jason Rhodes

ハードコードの代わりにプラグインを使用しても構わない場合は、次のコマンドを使用してみてください。

http://wordpress.org/extend/plugins/adminimize/

私が作成したすべてのサイトに使用して、さまざまな役割の表示内容をカスタマイズします。メニューだけでなく、さまざまなオプションを提供します。

1
Tafts