MENU

add_submenu_page()

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_menu_page() との違いは何ですか?

add_menu_page() はトップレベルの管理メニューを作成するのに対し、add_submenu_page() は既存のメニューの配下にサブメニューを追加するために使います。

add_submenu_page() の親メニューには何が指定できますか?

options-general.php(設定メニュー)や edit.php(投稿メニュー)などのスラッグを指定できます。また、add_menu_page() で作成した独自のトップメニューのスラッグを指定することも可能です。

サブメニューを複数追加できますか?

はい、add_submenu_page() を複数回呼び出せば、複数のサブメニューを追加できます。

まとめ

add_submenu_page() は、WordPress の管理画面にサブメニューを追加するための便利な関数です。

設定ページやプラグイン管理ページの追加に役立ちます。add_menu_page() と組み合わせることで、独自のメニュー構成を柔軟にカスタマイズできます。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次