Edited at

【WordPress】管理画面メニューのカスタマイズ

More than 3 years have passed since last update.

管理画面の左側にあるメニューをカスタマイズする方法メモ。


非表示にする


unset

admin_menuフックを使い、対象のメニューをunsetしてあげることで、非表示にすることが出来ます。


functions.php

function remove_menus () {

global $menu;
unset($menu[2]); // ダッシュボード
unset($menu[4]); // メニューの線1
unset($menu[5]); // 投稿
unset($menu[10]); // メディア
unset($menu[15]); // リンク
unset($menu[20]); // ページ
unset($menu[25]); // コメント
unset($menu[59]); // メニューの線2
unset($menu[60]); // テーマ
unset($menu[65]); // プラグイン
unset($menu[70]); // プロフィール
unset($menu[75]); // ツール
unset($menu[80]); // 設定
unset($menu[90]); // メニューの線3
}
add_action('admin_menu', 'remove_menus');

サブメニューを削除したい場合は、$submenuを使います。

$submenuをvar_dump()すると配列の値を調べることが出来ます。


functions.php

function remove_menus () {

global $submenu;
// var_dump($submenu);
unset($submenu['edit.php'][5]); // 投稿一覧
}
add_action('admin_menu', 'remove_menus');


remove_menu_page

unsetではなく、remove_menu_pageでも非表示にすることが可能です。

関数リファレンス/remove menu page


functions.php

function remove_menus () {

remove_menu_page( 'index.php' ); // ダッシュボード
remove_menu_page( 'edit.php' ); // 投稿
remove_menu_page( 'upload.php' ); // メディア
remove_menu_page( 'edit.php?post_type=page' ); // 固定ページ
remove_menu_page( 'edit-comments.php' ); // コメント
remove_menu_page( 'themes.php' ); // 外観
remove_menu_page( 'plugins.php' ); // プラグイン
remove_menu_page( 'users.php' ); // ユーザー
remove_menu_page( 'tools.php' ); // ツール
remove_menu_page( 'options-general.php' ); // 設定
}
add_action('admin_menu', 'remove_menus');

サブメニューを削除したい場合は、remove_submenu_pageを使います。

例えば、投稿の新規追加を非表示にしたい場合は以下のようにします。

unsetの時と同様に、非表示にしたいメニューの値を調べるには$submenuをvar_dump()します。


functions.php

function remove_menus () {

global $submenu;
// var_dump($submenu);
remove_submenu_page('edit.php', 'post-new.php');
}
add_action('admin_menu', 'remove_menus');


プラグインのメニューを非表示

プラグインのメニューも非表示にすることが出来ます。

例としてCustom Post Type UIのメニューを非表示にしてみます。

まず、プラグインのスラッグ名を調べる必要があるので、var_dumpで調べます。


functions.php

function remove_menus () {

global $menu;
var_dump($menu);
}
add_action('admin_menu', 'remove_menus');

管理画面にダッーと値が表示されるので、Custom Post Type UIの値を探します。

(左ナビが邪魔で見えないので、デベロッパーツールで消しちゃいましょう。

※ $menuにないプラグインのメニューはこの方法では非表示にすることが出来ないと思います。

ss01.png

値が分かったので、非表示にしてみます。

unsetを使う場合は配列番号、remove_menu_pageを使う場合は、「2 =>」の箇所の値を指定します。


functions.php

function remove_menus () {

// unsetを使う場合
global $menu;
unset($menu[2]);

// remove_menu_pageを使う場合
remove_menu_page('cptui_main_menu');
}
add_action('admin_menu', 'remove_menus');



管理者レベルで振り分け

管理者レベルによって制御したい場合はcurrent_user_canを使います。

WordPress Codex ユーザーの種類と権限


functions.php

function remove_menus () {

if (!current_user_can('level_10')) { //level10以下のユーザーの場合
~ 処理 ~
}
}
add_action('admin_menu', 'remove_menus');

※追記

ユーザーレベルでの振り分けはバージョン3.0で非推奨となっているので、ユーザーグループではなく権限グループで振り分けます。

WordPress Codex 権限グループ


functions.php

function remove_menus () {

if (!current_user_can('administrator')) { //管理者ではない場合
~ 処理 ~
}
}
add_action('admin_menu', 'remove_menus');

利用できる権限は以下になります。


権限
ユーザーレベル

administrator
管理者
8 ~ 10

editor
編集者
3 ~ 7

author
投稿者
2

contributor
寄稿者
1

subscriber
購読者
0


項目名を変更する

項目名を変更するには、admin_menuをフックし値を上書きするだけで変更できます。

配列の値を知りたい場合は、var_dump()すると分かります。


functions.php

function change_post_label() {

global $menu;
global $submenu;

// var_dump($menu);
// var_dump($submenu);

$menu[5][0] = 'お知らせ'; // 投稿をお知らせに変更
$submenu['edit.php'][5][0] = 'お知らせ一覧'; // 投稿一覧をお知らせ一覧に変更
}
add_action( 'admin_menu', 'change_post_label' );



WP Admin UI Customize

手動でいろいろ設定する方法をまとめてみましたが、これらは全部プラグインで簡単に設定できます。

WP Admin UI Customizeはシンプルな操作で簡単な操作で設定するとが出来ます。

サイドメニュー以外にもいろいろ設定することができて、いい感じなプラグインです。

WP Admin UI Customize 公式