管理画面のサイドバーから特定のプラグインのメニュー等を非表示

php WordPressのカスタマイズ

投稿、固定ページなどのメニューを非表示にする

管理画面のメニューを非表示にする場合、remove_menu_page() を使います。
アクションフックは admin_menu を使い、WordPressがメニューを生成するタイミングでカスタマイズします。

<?php
add_action('admin_menu', 'hidden_menu');
function hidden_menu()
{
    remove_menu_page('edit.php'); // 投稿
    remove_menu_page('edit.php?post_type=page'); // 固定ページ
    remove_menu_page('tools.php'); //ツール
}
?>

これで投稿、固定ページ、ツールが管理画面のメニューから消えます。
ただし通常のWPメニューは非表示になりますが、プラグインメニューはこの方法で消えません。

<?php
add_action('admin_menu', 'hidden_menu');
function hidden_menu()
{
    // これは消えない
    remove_menu_page('admin.php?page=test_plugin'); // 隠したいプラグインメニュー
}
?>

プラグインで追加されたメニューを非表示にする

メニューIDをもとに特定のメニューを非表示にします。
まずは非表示にしたいメニューIDを確認します。

隠したいメニューIDを確認する

<?php
function hidden_menu() 
{
	global $menu;
	print_r($menu);
}
add_action('admin_menu', 'hidden_menu');
?>

グローバル変数の $menu からメニューデータを表示します。
メニューは配列で格納されているので、隠したいメニューのID(配列のキー)を確認します。

隠したいメニューを非表示にする

確認したキーをもとに下記のように unset します。

<?php
function hidden_menu() 
{
    global $menu;
    unset($menu[10]); // キーを指定してunset
}
add_action('admin_menu', 'hidden_menu');
?>

この方法でプラグインのメニューは非表示にできます。
プラグインのメニューだけでなく、メニュー配列に入っているものであれば同じ方法でなんでも非表示にすることができます。

php WordPressのカスタマイズ

関連記事