web-dev-qa-db-ja.com

Wordpressのサブメニューの削除

私はここで答えられた質問を見つけました メニューとサブメニューを取り除きます2私の問題に対する答えすべての編集者ロールのサブメニューが削除されるように、コードを少し変更しました。一人のユーザーだけではありませんか?そしてこのコードを改善する方法はありますか?私はWordPressの3.5.1バージョンを使っています

私が使っているコード:

add_action('_admin_menu', 'remove_editor_submenu', 1);
function remove_editor_submenu() {
    global $current_user;
    get_currentuserinfo();
    if($current_user->user_login == 'username') {
        remove_action('admin_menu', '_add_themes_utility_last', 101);
    }
}

add_action('admin_init', 'remove_theme_submenus');
function remove_theme_submenus() {
    global $submenu, $current_user;
    get_currentuserinfo();
    if($current_user->user_login == 'username') {
        unset($submenu['themes.php'][5]);
        unset($submenu['themes.php'][7]);
        unset($submenu['themes.php'][15]);
    }
}
1
Pullapooh

すべての$current_user->user_login == 'username'in_array('editor', $current_user->roles)に置き換えます。また、グローバル変数$current_userからユーザー情報が得られるため、get_currentuserinfo();への呼び出しを削除することもできます。

これがコード交換です。

add_action('_admin_menu', 'remove_editor_submenu', 1);
function remove_editor_submenu() {
    global $current_user;
    if(in_array('editor', $current_user->roles)) {
        remove_action('admin_menu', '_add_themes_utility_last', 101);
    }
}

add_action('admin_init', 'remove_theme_submenus');
function remove_theme_submenus() {
    global $submenu, $current_user;
    if(in_array('editor', $current_user->roles)) {
        unset($submenu['themes.php'][5]);
        unset($submenu['themes.php'][7]);
        unset($submenu['themes.php'][15]);
    }
}
0
Michael Ecklund

user_can を使用してください。

if (user_can($current_user->ID,'editor')) { ...

2つの関数のうちどちらを使用したいのかわかりませんが、既存のif条件式を置き換えたり追加したりするのは簡単なはずです。

あなたは "編集者の役割" - 複数 - と言いますが、私はあなたが "編集者の役割を持っているすべてのユーザー"を意味すると仮定しています。

0
s_ha_dum