Help us understand the problem. What is going on with this article?

【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 公式

konweb
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした