WordPress 管理画面の左メニューを非表示にする方法

May 31, 2017

WordPress 管理画面の左メニューを非表示にする方法

WordPressを個人で運営しているのならばよいのですが、
クライアントが更新するなどの条件がある場合、あまり必要以外のところはいじってほしくないというのが制作側の思いだと思います。
(へんなことになりかねないですからね)

今回はせんど書かれているやつをまとめたバージョンで書いておこうと思います。

remove_menu_page()を使ったら一発

とりあえず、形はこんな感じです。シンプルに書くと。

function remove_menus(){

  remove_menu_page( $menu_slug );

}
add_action( 'admin_menu', 'remove_menus' );

$menu_slugはURLを見てもらって/wp-admin/の後ろにつくURLのことです。
つまり、/wp-admin/の後ろにつくURLをそのままremove_menu_page()()の中に入れてあげればよいです。これで非表示になってくれます。下に主要なページのremove_menu_page()を載っけておきますね。表示させるものだけコメントアウトしてもらえればOKでしょう。

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' );

※非表示ということでGUIからはアクセスできないのですが、URLをそのまま打ってしまうと普通に出てきます。笑 これを制御するには個別にアクセスできないようにする必要があります。(難儀なこっちゃ)

あ、あとこれだと管理者にも見えなくなっちゃうので、管理者では全部見せときたい!というときは下記のようにユーザー権限で条件分岐させておきましょう。

function remove_menus(){

    if (!current_user_can('level_10')) {
      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' );

current_user_can()で管理者(level_10)以外だったらremove_menu_page()っていう感じですね。

これで、いい感じにシンプル(逆に簡素)な管理画面が出来上がると思います。