DigiPress

Highly Flexible WordPress Theme

メニュー

[WP] add_menu_page の最初のサブメニュータイトルを変更する方法

WordPress の管理画面のサイドバーにテーマやプラグイン独自の専用メニューを追加する場合、add_menu_page というメソッドを利用することで簡単に追加できます。

add_menu_pageトップメニュー
add_menu_page(
__( 'Plugin Option' ), // ページタイトル
__( 'Plugin Option' ), // メニュータイトル
'manage_options', // アクセス権限レベル
'my-plugin-menu', // メニュースラッグ
'plugin_option_page_callback', // ページコンテンツを表示するコールバック関数
'dashicons-menu', // アイコン(SVGのURLまたはダッシュアイコンの class)
99 // サイドバーメニュー内の表示位置
);

このトップレベルのメニューにサブメニューを追加する場合は、add_submenu_page メソッドの第一引数に親メニューとしてトップレベルのスラッグを指定します。

add_submenu_pageサブメニュー
add_submenu_page(
'my-plugin-menu', // 親メニューのスラッグ
__( 'Sub Menu' ), // ページタイトル
__( 'Sub Menu' ), // メニュータイトル
'manage_options', // アクセス権限レベル
'my-plugin-sub-menu', // このサブメニューのスラッグ
'sub_menu_callback' // ページコンテンツを表示するコールバック関数
);

add_menu_page の2番目のパラメータにトップレベルのメニュータイトルを指定できますが、add_submenu_page でサブメニューを追加しても、このカスタムメニューの1番目のサブメニューは、そのままではトップメニューと同じメニュータイトルのものが表示されます。

つまり、add_menu_page でメニューを追加すると、親メニューと最初のサブメニューはセットで追加され、同じページ(URL)になり、add_submenu_page で追加するサブメニューは2番目以降に追加されます。

このとき、最初のサブメニューのタイトルを変更するには、トップメニュー専用のサブメニュー、つまりトップメニューとスラッグと同じスラッグのサブメニューを追加することでメニュータイトルをトップメニューのタイトルと分けることができます。

最初のサブメニュー名を親メニューと分ける
// 親メニュー
add_menu_page(
__( 'Plugin Option' ), // ページタイトル
__( 'Plugin Option' ), // メニュータイトル
'manage_options', // アクセス権限レベル
'my-plugin-menu', // メニュースラッグ
'', // サブメニューのコールバックでページを表示するため、親メニューは空
'dashicons-menu', // アイコン(SVGのURLまたはダッシュアイコンの class)
99 // サイドバーメニュー内の表示位置
);

// サブメニュー
add_submenu_page(
'my-plugin-menu', // 親メニューのスラッグ
__( 'Sub Menu' ), // ページタイトル
__( 'Sub Menu' ), // メニュータイトル
'manage_options', // アクセス権限レベル
'my-plugin-menu', // 親メニューのスラッグと同じにする
'plugin_option_page_callback' // ページコンテンツを表示するコールバック関数
);
比較例
Share / Subscribe
Facebook Likes
Tweets
Hatena Bookmarks
Pinterest
Pocket
Feedly
Send to LINE