WordPressの管理画面でお客様に応じて出したくないっていうメニューもあるかと思います。プラグイン等でも削除できたりしますが、functions.phpからも簡単に削除できるので一覧でまとめてみました。
メニュー消す系のプラグインを使いたくない人や、部分的な非表示なのでプラグイン使うまでもないって案件で参考にしてあげてください!
管理画面のメニューを消す方法
WordPress管理画面のメニューには「サイドメニュー」と「アドミンバー」の2つのメニューエリアがあります。
ぞれぞれの消し方を見ていきましょう!
サイドメニューを消す方法
サイドメニューはWordPress管理画面の左側に出ているメニューですね。管理画面の中で一番利用頻度の高いメニューかと思います。
サイドメニューは、admin_menu
のアクション内でremove_menu_page
によって対象のメニューを指定してあげればOKです。
標準メニューを消す
標準で備わっているWordPressのサイドメニューを全部消す処理が以下になります。必要に応じてremove_menu_page
を削除してあげてください。
※ 各メニューとの対応はソースコード内のコメントで記載してあります。
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', 999 );
標準のサブメニューを消す
各サイトメニューの中には子要素的な感じでサブメニューが存在します。例えば、「投稿」だったら「投稿一覧」「新規追加」「カテゴリー」「タグ」が入っている感じですね。
特定のサブメニューだけ消したい場合はremove_submenu_page
を使って親メニューを指定しつつ消していく感じになります。サブメニューを全部消しても親メニューが残っている限りはアクセスできてしまうので、親メニュー自体が不要な場合は先程のremove_menu_page
で一括で削除してあげてください。
※ 各メニューとの対応はソースコード内のコメントで記載してあります。
function remove_menus() {
remove_submenu_page( 'index.php', 'index.php' ); // ダッシュボード / ホーム.
remove_submenu_page( 'index.php', 'update-core.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_submenu_page( 'upload.php', 'upload.php' ); // メディア / ライブラリ.
remove_submenu_page( 'upload.php', 'media-new.php' ); // メディア / 新規追加.
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_submenu_page( 'themes.php', 'themes.php' ); // 外観 / テーマ.
remove_submenu_page( 'themes.php', 'customize.php?return=' . rawurlencode( $_SERVER['REQUEST_URI'] ) ); // 外観 / カスタマイズ.
remove_submenu_page( 'themes.php', 'nav-menus.php' ); // 外観 / メニュー.
remove_submenu_page( 'themes.php', 'widgets.php' ); // 外観 / ウィジェット.
remove_submenu_page( 'themes.php', 'theme-editor.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_submenu_page( 'users.php', 'users.php' ); // ユーザー / ユーザー一覧.
remove_submenu_page( 'users.php', 'user-new.php' ); // ユーザー / 新規追加.
remove_submenu_page( 'users.php', 'profile.php' ); // ユーザー / あなたのプロフィール.
remove_submenu_page( 'tools.php', 'tools.php' ); // ツール / 利用可能なツール.
remove_submenu_page( 'tools.php', 'import.php' ); // ツール / インポート.
remove_submenu_page( 'tools.php', 'export.php' ); // ツール / エクスポート.
remove_submenu_page( 'tools.php', 'site-health.php' ); // ツール / サイトヘルス.
remove_submenu_page( 'tools.php', 'export_personal_data' ); // ツール / 個人データのエクスポート.
remove_submenu_page( 'tools.php', 'remove_personal_data' ); // ツール / 個人データの消去.
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-permalink.php' ); // 設定 / メディア.
remove_submenu_page( 'options-general.php', 'privacy.php' ); // 設定 / プライバシー.
}
add_action( 'admin_menu', 'remove_menus', 999 );
外観のヘッダーと背景の消し方が分からなかったのですが、ここは大元のremove_theme_support
で消す感じなんですかね…。
function my_setup() {
remove_theme_support( 'custom-header' );
remove_theme_support( 'custom-background' );
}
add_action( 'after_setup_theme', 'my_setup' );
有名プラグインのメニュー
続いてはプラグインによって作成されるメニューを消す方法です。全部を挙げだすと終わらないので、有名でよく使われるプラグインに限定して紹介していきます。
function remove_menus() {
remove_menu_page( 'wpcf7' ); // Contact Form 7.
remove_menu_page( 'edit.php?post_type=mw-wp-form' ); // MW WP Form.
remove_menu_page( 'all-in-one-seo-pack/aioseop_class.php' ); // All In One SEO Pack.
remove_submenu_page( 'tools.php', 'aiosp_import' ); // All In One SEO Pack.
remove_menu_page( 'wpseo_dashboard' ); // Yoast SEO.
remove_menu_page( 'jetpack' ); // Jetpack.
remove_menu_page( 'edit.php?post_type=acf-field-group' ); // Advanced Custom Fields.
remove_menu_page( 'cptui_main_menu' ); // Custom Post Type UI.
remove_menu_page( 'backwpup' ); // BackWPup.
remove_menu_page( 'ai1wm_export' ); // All-in-One WP Migration.
remove_menu_page( 'advgb_main' ); // Advanced Gutenberg.
remove_submenu_page( 'options-general.php', 'tinymce-advanced' ); // TinyMCE Advanced.
remove_submenu_page( 'options-general.php', 'table-of-contents' ); // Table of Contents Plus.
remove_submenu_page( 'options-general.php', 'duplicatepost' ); // Duplicate Post.
remove_submenu_page( 'upload.php', 'ewww-image-optimizer-bulk' ); // EWWWW.
remove_submenu_page( 'options-general.php', 'ewww-image-optimizer/ewww-image-optimizer.php' ); // EWWWW.
}
add_action( 'admin_menu', 'remove_menus', 999 );
確認方法は、トップレベルのメニューのa
を確認すれば分かります。
admin.php?page=
のリンクの場合はpage=
以降の値がメニューのスラッグになるのでこちらを指定してあげてください。
(例)
Custom Post Type UIのリンクは「admin.php?page=cptui_manage_post_types
」となっています。この場合は、「cptui_manage_post_types
」の部分を指定してあげればOKということです。
remove_menu_page( 'cptui_main_menu.php' );
アドミンバーのメニューを消す方法
アドミンバーとは、WordPress管理画面の上部に出ているメニューバーのことですね。ここも表示するページによっていろんなメニューが出てくるので、必要に応じて消してあげる必要があります。
標準のアドミンバー
WordPressが標準で表示しているアドミンバーの消し方です。
※ 各メニューとの対応はソースコード内のコメントで記載してあります。
function remove_admin_bar_menus( $wp_admin_bar ) {
$wp_admin_bar->remove_menu( 'my-account' ); // こんにちは、[ユーザー名]さん.
$wp_admin_bar->remove_menu( 'user-info' ); // ユーザー / [ユーザー名].
$wp_admin_bar->remove_menu( 'edit-profile' ); // ユーザー / プロフィールを編集.
$wp_admin_bar->remove_menu( 'logout' ); // ユーザー / ログアウト.
$wp_admin_bar->remove_menu( 'wp-logo' ); // WordPressロゴ.
$wp_admin_bar->remove_menu( 'about' ); // WordPressロゴ / WordPressについて.
$wp_admin_bar->remove_menu( 'wporg' ); // WordPressロゴ / WordPress.org.
$wp_admin_bar->remove_menu( 'documentation' ); // WordPressロゴ / ドキュメンテーション.
$wp_admin_bar->remove_menu( 'support-forums' ); // WordPressロゴ / サポート.
$wp_admin_bar->remove_menu( 'feedback' ); // WordPressロゴ / フィードバック.
$wp_admin_bar->remove_menu( 'site-name' ); // サイト名.
$wp_admin_bar->remove_menu( 'view-site' ); // サイト名 / サイトを表示.
$wp_admin_bar->remove_menu( 'updates' ); // 更新.
$wp_admin_bar->remove_menu( 'comments' ); // コメント.
$wp_admin_bar->remove_menu( 'new-content' ); // 新規投稿.
$wp_admin_bar->remove_menu( 'new-post' ); // 新規投稿 / 投稿.
$wp_admin_bar->remove_menu( 'new-media' ); // 新規投稿 / メディア.
$wp_admin_bar->remove_menu( 'new-page' ); // 新規投稿 / 固定.
$wp_admin_bar->remove_menu( 'new-user' ); // 新規投稿 / ユーザー.
$wp_admin_bar->remove_menu( 'menu-toggle' ); // メニュー.
}
add_action( 'admin_bar_menu', 'remove_admin_bar_menus', 999 );
有名プラグインのアドミンバー
続いては、プラグインをインストールすると表示されるアドミンバーの消し方です。有名なプラグインだけに絞っています。
※ 各メニューとの対応はソースコード内のコメントで記載してあります。
function remove_admin_bar_menus( $wp_admin_bar ) {
$wp_admin_bar->remove_menu( 'new-mw-wp-form' ); // 新規投稿 / MW WP Form.
$wp_admin_bar->remove_menu( 'wpseo-menu' ); // Yoast SEO.
$wp_admin_bar->remove_menu( 'all-in-one-seo-pack' ); // All in One SEO Pack.
$wp_admin_bar->remove_menu( 'show_template_file_name_on_top' ); // Show Current Template.
}
add_action( 'admin_bar_menu', 'remove_admin_bar_menus', 100000 );
add_filter( 'aioseo_show_in_admin_bar', '__return_false' ); // All in One SEO Pack.
プライオリティが強烈に高いプラグインが1つあって、「100000」にしないとアドミンバーは消えませんでした(どのプラグインかは忘れた…)
(おまけ)メニューIDはglobal変数から確認できる
一応以下の$menuのglobal変数内にサイドメニュー情報は全部入っているので、表の情報から分からないメニューなどは確認してみるといいかもしれません。
global $menu;
var_dump( $menu );
※ メニューIDは2番目の引数に入っていました。
ちなみに、サブメニューはこちら。
global $submenu;
var_dump( $submenu );
アドミンバーはこちら。
global $wp_admin_bar;
var_dump( $wp_admin_bar );
URL直打ちでアクセス自体はできるので注意
1つだけ注意が必要なのが、非表示になっているだけ機能自体は残っています。なので、URLを直打ちするとアクセスできてしまうのです。
例えば以下のようにで投稿のカテゴリーを消したとしても、以下のようにURLを直打ちすれば画面は遷移できてしまいます。
function remove_menus() {
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' ); // 投稿 / カテゴリー.
}
add_action( 'admin_menu', 'remove_menus', 999 );
なので、このメニューを消す方法は、あくまでも簡易的な非表示の目的で使うようなイメージです。
権限に応じて条件分岐する
「特定の権限のユーザーだけ〇〇のメニューを非表示にしたい」というケースもあるかと思います。
current_user_can
という関数を使うことで、今のユーザー権限を確認できるので、こちらを使って条件分岐していく形となります。
以下のような条件分岐を行うことで、例えば「編集者の場合は「カテゴリー」を消す」みたいな書き方ができるようになるのです。
if ( current_user_can( 'administrator' ) ) {
// 管理者の場合
} elseif ( current_user_can( 'editor' ) ) {
// 編集者の場合
} elseif ( current_user_can( 'author' ) ) {
// 投稿者の場合
} elseif ( current_user_can( 'contributor' ) ) {
// 寄稿者の場合
} elseif ( current_user_can( 'subscriber' ) ) {
// 購読者の場合
}
ユーザー権限に対するそれぞれの値は以下のとおりです。(current_user_can
の引数に使う値)
- 管理者:
administrator
- 編集者:
editor
- 投稿者:
author
- 寄稿者:
contributor
- 購読者:
subscriber
おわり
WordPress管理画面のメニューをプラグインなしで消す方法でした。一回まとめておくと、今後消したくなった時に参照しやすいですね。
ユーザーの権限などに応じて、表示するメニューは柔軟にカスタマイズしてあげましょう!