2017.12.25

WordPress

WordPress管理画面で不要なメニューを見えなくする方法

めにゅー

WordPressの管理画面には投稿ページを制御するためのメニューが多数並びます。これは投稿タイプを足せばその分も並び、複数の投稿タイプやプラグイン、ツールや設定項目と実装につれ増えていき、最終的には結構煩雑で物量のある管理画面メニューになりがちです。
制作者が使う分にはそれでもまだ問題ないんですが、クライアントに納品するWordpresでクライアントが絶対触らない機能や、逆に触るとサイトの設定が崩れるような箇所は、function.phpで指定することによって触れないようにする工夫ができます。今回はそんなWordpress管理画面のカスタマイズ法法をご紹介します。

管理画面メニューの隠し方

unset

admin_menuフックを利用し、対象となるメニューをunsetすることで、表示を隠すことができます。

function hide_menu () {
    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', 'hide_menu');

サブメニューを隠したいときは$submenuを利用すれば実現できます。

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

配列はvar_dump($submenu);で調べられます。

remove_menu_page

Worrdpress関数のremove_menu_pageを使って非表示にすることもできます。

function hide_menu () {
    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', 'hide_menu');

サブメニューの場合は、remove_submenu_pageを使います。

function hide_menu () {
    global $submenu;
    remove_submenu_page('edit.php', 'post-new.php');
}
add_action('admin_menu', 'hide_menu');

管理者権限によって隠す

WordPressの管理者権限によって表示を隠す設定ができます。

function hide_menu () {
    if (!current_user_can('administrator')) { //管理者ではない場合
    remove_menu_page( 'index.php' ); // 例でダッシュボードを隠しています
    }
}
add_action('admin_menu', 'hide_menu');

まとめ

メニューの表示はプラグインでも制御できますが、複数のプラグインが干渉してうまく動作しなかったりすることがままあります。基本に立ち返って手動でコードを記入する機会があれば、利用してみてください。

SHARE

この記事の筆者

Web&Soundクリエイター 田村 培修

Web&Soundクリエイター 田村 培修

楽器とパソコンのキーボードを使い分ける当社のマルチクリエイター。e-sportsに興味津々であれこれ情報を収集中。

WEBSITE DESIGN REQUEST

ホームページ制作・リニューアルの
ご相談はお気軽に

TEL 06-6537-9941 平日 9:00〜19:00

〒550-0012 大阪府大阪市西区立売堀2-5−41

ホームページ制作を相談する