説明
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

コメント