Site Overlay

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


前回の「WordPress管理画面のメニュー名を変える」と同様、よく使う管理画面カスタマイズのひとつ、メニュー項目の表示/非表示を変える方法です。


メニューを非表示にする

メニューを非表示にするには、remove_menu_pageを使います。例として、「コメント」を消したい場合はこう。

functions.php
add_action('admin_menu', 'change_admin_menu');

function change_admin_menu() {
 remove_menu_page('edit-comments.php');
}

remove_menu_page() のカッコの中に入れるのは、メニューのスラッグです。大体は、管理画面で該当のメニューを開いたときのURLの最後の部分になっています。デフォルトの親メニューのスラッグを入れた例はこちら↓

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' );        // 設定

メニューを非表示にしても、機能自体がなくなるわけではありません。管理画面の左サイドバーから見えなくなるだけです。URL直打ちなどをすれば、アクセスすることができます。ですので、「クライアントさんが迷わないように使わないメニューを隠しておきたい」というような場合に向いています。


メニューを表示する

デフォルトで出ていないメニューを表示させるには、add_menu_pageを使います。例として、「再利用ブロック」を出したい場合はこう。

functions.php
add_action('admin_menu', 'change_admin_menu');

function change_admin_menu() {
 add_menu_page('再利用ブロック', '再利用ブロック', 'manage_options', 'edit.php?post_type=wp_block');
}

↓ add_menu_pageの書き方のルールはこうなっています。

add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );

$page_title ※必須
メニューが選択されたとき、ページのタイトルタグに表示されるテキスト。
……と公式ドキュメントにはありますが、既存のメニューを追加する場合はどこにも反映されない…かも?

$menu_title ※必須
メニューとして表示されるテキスト。

$capability ※必須
メニューを表示するために必要な権限。権限の一覧はこちら

$menu_slug ※必須
メニューのスラッグ名。
既存のメニューを追加する場合は、いったんそのページを開いて、URLの最後の部分をコピペしてくると手っ取り早いです。

$function
メニューページを表示するための関数。
既存のメニューを追加するだけなら省略してOK。

$icon_url
メニューのアイコンのURL。
省略したときは歯車アイコンになります。

$position
メニューの表示位置。数字を入れます。大きいほど下のほうに表示されます。
デフォルトでは「ダッシュボード」が2、一番下の「設定」が80と決まっていますので、その前後や間の好きなところを指定します。(※他のデフォルト項目の数字はこちら
指定しなければ一番下に追加されます。


WordPress管理画面のメニュー項目は、クライアントさんや管理者の使い勝手に大きく影響する部分です。わかりにくくてもダメだけど、あまり自由に変更しすぎても汎用性がなくなるし、かえって迷わせてしまいかねない。何より、テーマに依存するfunctions.phpで設定しすぎるのもどうなんだ、という疑問もあります。

わかりやすく、やりすぎず程々に、そしてできれば使ってもらった感想を聞いて、お客様ごとに何がベストかを探っていけると良いのかなと思います。