【WordPress】管理画面のメニューを非表示にするカスタマイズ

ダッシュボードのメニューを非表示にする関数は、remove_menu_pageを使用する。サブメニューの非表示には、remove_submenu_pageを使用する。これらの関数で非表示にしても、ユーザーは直接アクセスできるので注意する。

remove_menu_pageの使い方

remove_menu_page( $menu_slug );

すべてのユーザーから、すべてのメニューを非表示にする場合

function my_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', 'my_remove_menus');

一部のユーザーのみ非表示にする場合は、current_user_canを使用して、権限をチェックする。

current_user_can( $capability );

remove_submenu_pageの使い方

サブメニューを非表示にしたい場合は、remove_submenu_page関数を使用する。

remove_submenu_page( $menu_slug, $submenu_slug );

パラメータ

  • $menu_slug:(必須) 親メニューのスラッグ
  • $submenu_slug:(必須) サブメニューのスラッグ

親メニューとサブメニューをすべて非表示にする場合

/*
 * =====管理画面のメニューを非表示にする=====
 */
function my_remove_menus() {
  remove_menu_page('index.php');
  remove_submenu_page('index.php', 'index.php');
  remove_submenu_page('index.php', 'update-core.php');
  remove_menu_page('separator1');  // セパレータ1
  remove_menu_page('edit.php');
  remove_submenu_page('edit.php', 'edit.php');
  remove_submenu_page('edit.php', 'post-new.php');
  remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=category');
  remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag');
  remove_menu_page('upload.php');
  remove_submenu_page('upload.php', 'upload.php');
  remove_submenu_page('upload.php', 'media-new.php');
  remove_menu_page('link-manager.php');
  remove_submenu_page('link-manager.php', 'link-manager.php');
  remove_submenu_page('link-manager.php', 'link-add.php');
  remove_submenu_page('link-manager.php', 'edit-tags.php?taxonomy=link_category');
  remove_menu_page('edit.php?post_type=page');
  remove_submenu_page('edit.php?post_type=page', 'edit.php?post_type=page');
  remove_submenu_page('edit.php?post_type=page', 'post-new.php?post_type=page');
  remove_menu_page('edit-comments.php');
  remove_menu_page('separator2');  //  セパレータ2
  remove_menu_page('themes.php');
  remove_submenu_page('themes.php', 'themes.php');
  remove_submenu_page('themes.php', 'widgets.php');
  remove_submenu_page('themes.php', 'theme-editor.php');
  remove_menu_page('plugins.php');
  remove_submenu_page('plugins.php', 'plugins.php');
  remove_submenu_page('plugins.php', 'plugin-install.php');
  remove_submenu_page('plugins.php', 'plugin-editor.php');
  remove_menu_page('users.php');
  remove_submenu_page('users.php', 'users.php');
  remove_submenu_page('users.php', 'user-new.php');
  remove_submenu_page('users.php', 'profile.php');
  remove_menu_page('tools.php');
  remove_submenu_page('tools.php', 'tools.php');
  remove_submenu_page('tools.php', 'import.php');
  remove_submenu_page('tools.php', 'export.php');
  remove_menu_page('options-general.php');
  remove_submenu_page('options-general.php', 'options-general.php');
  remove_submenu_page('options-general.php', 'options-writing.php');
  remove_submenu_page('options-general.php', 'options-reading.php');
  remove_submenu_page('options-general.php', 'options-discussion.php');
  remove_submenu_page('options-general.php', 'options-media.php');
  remove_submenu_page('options-general.php', 'options-privacy.php');
  remove_submenu_page('options-general.php', 'options-permalink.php');
  remove_menu_page('profile.php');
}
add_action('admin_menu', 'my_remove_menus');

参考:
関数リファレンス/remove menu page
関数リファレンス/remove submenu page