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

説明

add_menu_page() は、管理画面の左メニューに、トップレベルのメニューページを追加する関数です。

基本構文

add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $callback = '', string $icon_url = '', int|float $position = null ): string

引数

  • $page_title:ページのtitle
  • $menu_title:メニューに表示する名前
  • $capability:表示に必要な権限
  • $menu_slug:メニューの識別名
  • $callback:ページの内容を出力する関数
  • $icon_url:アイコン(dashicons-* など)
  • $position:メニューの位置

戻り値

ページのフック名。

使い方(サンプル)

add_action( 'admin_menu', function() {
	add_menu_page( '設定', 'マイ設定', 'manage_options', 'my-settings', 'my_settings_page', 'dashicons-admin-generic', 80 );
} );

注意点

  • admin_menu フックで呼びます。
  • $capability を適切に設定しないと、意図しないユーザーにも表示されます。
  • 設定画面だけなら、add_options_page() で「設定」メニュー配下に追加する方法もあります。

実務での使いどころ

  • プラグインやテーマの、独自の設定ページを、管理画面の左メニューに、追加するとき。
  • 専用のメニュー(アイコン付き)で、複数のページをまとめるとき。

よくあるミスと対処

  • admin_menu フックの外で呼んでいる。
  • 権限($capability)が、緩すぎる。設定の変更なら、manage_options など、適切な権限にする。
  • $menu_slug が、他のメニューと重なる。
  • コールバックの中で、権限やnonceの確認をしていない。

NG例

add_menu_page( '設定', '設定', 'read', 'my-settings', 'my_page' ); // フックの外で、権限も緩い

OK例

add_action( 'admin_menu', function () {
	add_menu_page( 'サイト設定', 'サイト設定', 'manage_options', 'my-settings', 'my_settings_page', 'dashicons-admin-generic', 80 );
} );

使い分け早見表

関数 追加する場所
add_menu_page() 左メニューの、トップレベル
add_submenu_page() 既存のメニューの、下
add_options_page() 「設定」メニューの、下

関連項目

add_submenu_page()、add_options_page()、remove_menu_page()

公式リファレンス:add_menu_page() | Function | WordPress Developer Resources

コメント

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