add_submenu_page()
は、WordPress の管理画面のメニューにサブメニューを追加する関数です。
例えば、プラグインの設定ページを「設定」メニューのサブメニューとして追加したり、独自のトップレベルメニューの配下に設定ページを作成する際に使用されます。この関数を利用することで、管理画面の操作性を向上させることができます。
機能の説明
add_submenu_page()
は、既存の管理メニュー(「投稿」「固定ページ」「設定」など)のサブメニューとして、新しいページを追加するための関数です。WordPress のプラグイン開発では、設定ページや独自の管理ページを追加する際によく使用されます。
主な用途
- プラグインの設定ページを「設定」メニューのサブメニューに追加する
- カスタム投稿タイプの管理ページを作成し、その配下に追加の設定ページを設置する
- 独自のトップレベルメニューの配下にサブメニューを追加する
シンプルなコード例
add_action('admin_menu', function() {
add_submenu_page(
'options-general.php', // 親メニューのスラッグ
'カスタム設定ページ', // サブメニューのタイトル
'カスタム設定', // メニューに表示される名前
'manage_options', // 必要な権限
'custom-settings', // サブメニューのスラッグ
function() { echo '<h1>カスタム設定ページ</h1>'; } // コールバック関数
);
});
'options-general.php'
:サブメニューを追加する親メニュー(ここでは「設定」メニュー)'カスタム設定ページ'
:ページのタイトル'カスタム設定'
:メニューに表示される名前'manage_options'
:このメニューを表示するために必要な権限'custom-settings'
:サブメニューのスラッグ(URL の識別子)function() { echo '<h1>カスタム設定ページ</h1>'; }
:ページの表示内容(簡単な例)
使い方の説明
基本的な使い方
以下のコードは、WordPress の「設定」メニューの中にカスタムサブメニューを追加し、カスタムページを作成する例です。
function my_custom_menu() {
add_submenu_page(
'options-general.php', // 親メニュー
'カスタム設定', // サブメニューのページタイトル
'カスタム設定', // メニューの表示名
'manage_options', // 必要な権限
'my-custom-settings', // スラッグ
'my_custom_settings_page' // コールバック関数
);
}
add_action('admin_menu', 'my_custom_menu');
function my_custom_settings_page() {
echo '<div class="wrap">';
echo '<h1>カスタム設定ページ</h1>';
echo '<p>ここに設定オプションを追加できます。</p>';
echo '</div>';
}
独自のトップレベルメニューのサブメニューとして追加
以下のように add_menu_page()
で独自のトップメニューを作成し、その配下に add_submenu_page()
を使ってサブメニューを追加できます。
function my_custom_admin_menu() {
add_menu_page(
'カスタムメニュー', // メニュータイトル
'カスタムメニュー', // メニューに表示される名前
'manage_options', // 必要な権限
'custom-menu', // スラッグ
'my_custom_page' // コールバック関数
);
add_submenu_page(
'custom-menu', // 親メニューのスラッグ
'サブメニュー1', // ページタイトル
'サブメニュー1', // メニューに表示される名前
'manage_options', // 必要な権限
'custom-submenu-1', // スラッグ
'my_custom_submenu_1' // コールバック関数
);
}
add_action('admin_menu', 'my_custom_admin_menu');
function my_custom_page() {
echo '<h1>メインメニューのページ</h1>';
}
function my_custom_submenu_1() {
echo '<h1>サブメニュー1のページ</h1>';
}
一緒に使うことが多い関連タグ
add_menu_page()
独自のトップレベルメニューを追加する。
add_menu_page(
'カスタムメニュー',
'カスタムメニュー',
'manage_options',
'custom-menu',
'my_custom_page'
);
これを使用すると、WordPress 管理画面に新しいメインメニューを追加できます。
remove_submenu_page()
特定のサブメニューを削除する。
remove_submenu_page('options-general.php', 'custom-settings');
'options-general.php'
(設定メニュー)内の 'custom-settings'
というサブメニューを削除します。
追加情報で取得したい場合
管理メニューの一覧を取得
現在登録されている管理メニューの情報を取得するには、global $submenu
を利用できます。
global $submenu;
print_r($submenu);
このコードを実行すると、現在登録されているサブメニューのリストが取得できます。
想定されるトラブル
サブメニューが表示されない
解決方法
add_action('admin_menu', '関数名');
を適切に使用しているか確認するmanage_options
などの権限が不足していないか確認する(管理者以外がアクセスする場合)add_submenu_page()
の第一引数に指定した親メニューのスラッグが正しいか確認する
サブメニューをクリックしてもページが表示されない
解決方法
- コールバック関数の名前が
add_submenu_page()
で指定したものと一致しているか確認する function my_custom_page() {}
の中で HTML 出力を適切に行っているか確認する
Q&A
まとめ
add_submenu_page()
は、WordPress の管理画面にサブメニューを追加するための便利な関数です。
設定ページやプラグイン管理ページの追加に役立ちます。add_menu_page()
と組み合わせることで、独自のメニュー構成を柔軟にカスタマイズできます。
コメント