お客様に納品するときなど、WordPressの管理メニューをユーザーによって非表示にしたいことがあります。
WordPressのデフォルトの機能で管理権限を設定することでメニューの表示を管理することができますが、プラグインなどの表示/非表示を切り替えたい場合には使うことができません。
ここでは、ユーザー毎にプラグインなどのWordPressの管理メニューの表示・非表示を切り替える方法についてまとめています。
ユーザー毎に管理メニューの一部を非表示にする方法|User Admin Simplifier
ユーザー毎に管理メニューの一部を表示したり、非表示にするのに最も簡単な方法は「User Admin Simplifier」というプラグインを使用することです。

設定はとても簡単で、ものすごく使いやすいです。
ただ1つものすごく気になることがあります。それはプラグインの最終更新が4年前で止まっていることです。
最新のWordPressのバージョンでも使用することができますが、今後のセキュリティ強化などで使えなくなる可能性やセキュリティーホールがある可能性があるので、そこは注意が必要かと思います。
User Admin Simplifierでできること
User Admin Simplifierでできるのは主に次の3つです。
- メニューの表示/非表示
- サブメニューの表示/非表示
- 上部メニュバーの表示/非表示
非表示にしたいメニューをクリックしてチェックマークをつけるだけで設定が反映できます。とても簡単です。

User Admin Simplifierでできないこと
User Admin Simplifierはとっても簡単で使いやすいのですが、決して万能ではありません。いくつかのできないことがあります(人によっては結構致命的です)
権限の設定ができない
User Admin Simplifierはあくまでユーザー毎に管理メニューの表示・非表示を切り替えるだけで、決して、非表示にしたメニューのアクセス権や変更権限を拒否するものではありません。
対象のユーザーでログインしているときに、非表示になっているメニューにリンクなどでアクセスすればそのユーザーに権限が付与されている場合は、アクセスや変更ができてしまいます。(そんなことをする人はほとんどいないと思いますが)
権限の設定はWordPressの「ユーザー」メニューの「権限グループ」で設定することができます。

オリジナルで独自の権限グループを作成したり、より細かい権限設定をしたい場合は「User Role Editor」というプラグインを使用します。
例えば、上記画像の権限グループ「予約管理」はデフォルトでは存在せず、「User Role Editor」で新たに追加したものです。

メニュー名変更時に英語しか使えない(漢字やひらがなが使えない)
functions.phpで非表示にしているメニュー名を変更する設定を行うときに、漢字やひらがなを使うと次のようなエラーが発生して、設定を反映することができません。
wp-content/themes/astra-child/functions.php ファイルの42行目でエラーが発生したため、PHP コードの変更が適用されませんでした。修正して再度保存してください。
syntax error, unexpected ‘$menu’ (T_VARIABLE)
add_action( 'admin_menu', 'customize_admin_menu_label', 9999 );
function customize_admin_menu_label(){
global $menu;
$menu[101][0] = '予約管理';
}
上記の変更したいメニュー名「予約管理」を英語のみの「RESERVATION」などにすれば問題なく保存することができます。
add_action( 'admin_menu', 'customize_admin_menu_label', 9999 );
function customize_admin_menu_label(){
global $menu;
$menu[101][0] = 'RESERVATION';
}
Admin menu editorと併用できない
メニュー名を変更したり、ユーザー毎に管理権限を設定する秀逸なプラグインに「Admin menu editor」がありますが、この「Admin menu editor」と「User Admin Simplifier」は併用することができません。

「Admin menu editor」が有効になっていると、そちらの設定が優先されてしまい、「User Admin Simplifier」の設定は無視されます。
User Admin Simplifierが機能しない(使えない・設定が反映できない)場合の原因の多くはこれではないでしょうか?
「Admin menu editor」を無効にすれば、「User Admin Simplifier」が使用できるようになります。
User Admin Simplifierは、ユーザー毎にメニューを表示・非表示を細かく設定することに加えて「メニュー名」を変更したい場合には向いていません。
User Admin Simplifierでメニューを非表示にする手順
インストール
まずは「User Admin Simplifier」をインストールし有効化します。

すると、WordPress管理画面の「ツール」の中に「User Admin Simplifier」が追加されます。有効化したのにどこにもない…見当たらない…という方はツールの中を見てみてください。

メニューの非表示
続いて、ユーザーを選択します。

例えば、testというユーザーを選択すると以下のように設定メニューが表示されます。

各メニュー名の先頭にチェックボックスがついているので、非表示にしたいメニューにチェックを入れます。
例えば、「投稿」「メディア」「固定ページ」のみ表示したい場合はそのチェックマークを外し、一番下の「Save Changes」をクリックします。

するとチェックマークを外したメニューのみが表示されるようになります。

控えめに言って超便利です。
サブメニューを非表示にする方法
サブメニューを非表示にするには、メインメニューの横の「+ Show submenus」をクリックして開きます。
サブメニューが表示されるので、非表示にしたい項目にチェックマークを入れます。
例えば、「投稿」の「投稿一覧」以外を非表示にしたい場合は、以下のようにします。

「Save Changes」をクリックするのをお忘れなく。設定が反映されると以下のようになります。

完璧です。
上部のメニューバーを非表示にする方法(Admin bar)
デフォルトではWordPress管理画面の上部にメニューバーが表示されます。

このメニューバーもユーザーによっては不要です。これを非表示にしたい場合は、「Disable the adimin bar」の「Completely disable the admin bar for this user.」にチェックを入れます。

これで、上部のメニューバーが非表示になります。

上部のメニューバーの一部を非表示にする方法(Admin bar)
上部メニューバーの一部の項目のみを非表示にすることもできます。
その場合は「Disable the adimin bar」の「Completely disable the admin bar for this user.」にチェックを外します。
そして、下にある「Disable admin bar menus/submenus:」の非表示にしたい項目にチェックマークを入れます。

とてもシンプルになりました。
