説明
add_submenu_page() は、既存のメニューの下に、サブメニューページを追加する関数です。
基本構文
add_submenu_page( string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug, callable $callback = '', int|float $position = null ): string|false
引数
$parent_slug:親メニューのスラッグ$page_title:ページタイトル$menu_title:メニュー名$capability:必要な権限$menu_slug:識別名$callback:出力する関数$position:位置
戻り値
ページのフック名。権限がなければ false。
使い方(サンプル)
add_submenu_page( 'my-settings', '詳細設定', '詳細', 'manage_options', 'my-settings-detail', 'my_detail_page' );
注意点
- 親メニューより後に登録します(優先度に注意)。
実務での使いどころ
- 独自のメニューの下に、サブページを追加するとき。
- カスタム投稿タイプや、WordPress標準のメニューの下に、ページを追加するとき。
よくあるミスと対処
$parent_slugが違い、メニューが表示されない。標準のメニューは、ファイル名(options-general.php)、カスタム投稿タイプはedit.php?post_type=newsのように指定する。admin_menuフックの外で呼んでいる。- 最初のサブメニューが、親メニューと、同じ名前で表示されることを、知らない。
NG例
add_submenu_page( 'settings', '詳細', '詳細', 'manage_options', 'my-detail', 'my_page' ); // 親のスラッグが違う
OK例
add_action( 'admin_menu', function () {
add_submenu_page( 'my-settings', '詳細設定', '詳細設定', 'manage_options', 'my-detail', 'my_detail_page' );
} );
使い分け早見表
| 関数 | 追加する場所 |
|---|---|
add_submenu_page() |
既存のメニューの、下 |
add_menu_page() |
左メニューの、トップレベル |
add_options_page() |
「設定」メニューの、下 |
関連項目
add_menu_page()、add_options_page()
公式リファレンス:add_submenu_page() | Function | WordPress Developer Resources

コメント