WordPress でユーザー別に管理画面の項目を非表示にする方法

WordPress でユーザー別に管理画面サイドバーメニューの項目を非表示にする方法を紹介します。
例えば、納品時にユーザー別に表示項目を分けたい時に便利な方法です。

  1. ユーザー別にサイドバーメニューの項目を非表示にする方法
  2. 複数のユーザーでサイドバーメニューの項目を非表示にする方法

ユーザー別にサイドバーメニューの項目を非表示にする方法

例えば、特定のユーザー(ID:3)が管理画面へアクセスした時。
メディアや固定ページのサイドバーメニューを非表示にしたい場合は、次のコードを function.php に追加します。

/*【管理画面】ユーザー別にサイドバーメニューの表示をカスタマイズする */
function remove_menus_user(){
global $current_user; wp_get_current_user();
if ($current_user->ID == 3 ){ // ユーザーIDを指定、該当ユーザーなら以下を適用
global $menu;
$restricted = array( // 非表示にしたいメニューを指定
__('メディア'),
__('固定ページ'),
__('ツール')
);
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_user');

ユーザーIDは管理画面のユーザープロフィールページのアドレスに記載されています。
非表示にする項目を増やす際は、7行以降のメニュー名の記載部分を調整してください。
その際、最後の項目の「,(カンマ)」の扱いに気をつけてください。

$restricted = array( // 非表示にしたいメニューを指定
__('メディア'),
__('固定ページ'),
__('ツール') // 最後は「,(カンマ)」がいらない
);

サイドバーメニューにプラグインの項目がある場合、プラグインによっては非表示にできない場合があります。ご注意ください。

複数のユーザーでサイドバーメニューの項目を非表示にする方法

複数のユーザーを対象にするには論理演算子の || を追加します。

...省略...
if ($current_user->ID == '1' || $current_user->ID == '2') {
...省略...

まとめ

WordPress でユーザー別に管理画面のサイドバーメニューの項目を非表示にする方法を紹介しました。