add_submenu_page() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました