MENU

add_options_page()

add_options_page() は、WordPressの管理画面の「設定」メニュー内にカスタム設定ページを追加するための関数です。

プラグインやテーマで独自の設定を管理画面から簡単に変更できるようにする際に役立ちます。開発者はこの関数を使って、設定ページを作成し、ユーザーが簡単にオプションを変更できるようにできます。

目次

機能の説明

add_options_page() は、WordPressの 「設定」メニュー の中に 独自の設定ページ を追加するための関数です。

どんな時に使うか?

  • プラグインの設定ページを作成したい場合
  • テーマのカスタマイズオプションを追加したい場合
  • WordPressのデフォルト設定とは別に、独自の設定項目を追加したい場合

この関数を利用することで、管理者が「設定」メニューから簡単にオプションを変更できるようになります。

シンプルなコード例

add_action('admin_menu', function() {
    add_options_page(
        'カスタム設定',  // 設定ページのタイトル
        'カスタム設定',  // メニュー名
        'manage_options', // 権限
        'custom-settings', // メニューのスラッグ
        function() { echo '<h1>カスタム設定ページ</h1>'; } // コールバック関数
    );
});
  • 'カスタム設定':管理画面に表示されるページタイトル
  • 'カスタム設定':管理メニュー内の表示名
  • 'manage_options':このページを操作できる権限(管理者のみ)
  • 'custom-settings':設定ページの識別用スラッグ
  • function() { ... }:ページのコンテンツを表示するための関数

このコードを functions.php またはプラグインのメインファイルに追加すると、「設定」メニュー内に「カスタム設定」という項目が追加されます。

使い方の説明

add_options_page() の基本的な使い方を詳しく説明します。

設定ページに独自のフォームを追加する

次のコードでは、WordPressの設定APIを利用して独自のオプションを保存・表示する方法を紹介します。

// メニューの追加
add_action('admin_menu', function() {
    add_options_page(
        'カスタム設定',  
        'カスタム設定',
        'manage_options',
        'custom-settings',
        'custom_settings_page'
    );
});

// 設定ページの内容
function custom_settings_page() {
    ?>
    <div class="wrap">
        <h1>カスタム設定</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('custom_settings_group');
            do_settings_sections('custom-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

// 設定の登録
add_action('admin_init', function() {
    register_setting('custom_settings_group', 'custom_option');
    
    add_settings_section(
        'custom_section',
        'カスタム設定セクション',
        function() { echo 'ここでオプションを設定できます。'; },
        'custom-settings'
    );
    
    add_settings_field(
        'custom_option_field',
        'カスタムオプション',
        function() {
            $value = get_option('custom_option', '');
            echo '<input type="text" name="custom_option" value="' . esc_attr($value) . '" />';
        },
        'custom-settings',
        'custom_section'
    );
});
  1. admin_menu アクションで add_options_page() を使って設定ページを追加
  2. custom_settings_page() で設定画面のHTMLを定義
  3. admin_init フックで設定項目を登録し、入力フォームを追加
  4. settings_fields()do_settings_sections() を使用してWordPressの設定APIと連携

一緒に使うことが多い関連タグ

add_menu_page()

管理画面のサイドバーにカスタムメニューを追加したい場合に使用します。

add_menu_page(
    'カスタム管理ページ',
    'カスタム管理',
    'manage_options',
    'custom-admin',
    'custom_admin_page'
);

register_setting()

設定を保存するために使用されます。

register_setting('custom_settings_group', 'custom_option');

get_option()

保存された設定を取得するために使用されます。

$option = get_option('custom_option', 'デフォルト値');

追加情報で取得したい場合

get_option() でオプションを取得

add_options_page() で保存した値は get_option() で取得できます。

$value = get_option('custom_option', 'デフォルト値');
echo '現在の設定値: ' . esc_html($value);

想定されるトラブル

「設定ページが表示されない」

add_options_page() の実行が admin_menu フックの外で行われている可能性があります。

解決方法

admin_menu フック内で add_options_page() を実行してください。

add_action('admin_menu', function() {
    add_options_page('カスタム設定', 'カスタム設定', 'manage_options', 'custom-settings', 'custom_settings_page');
});

「設定が保存されない」

register_setting() が適切に設定されていない可能性があります。

解決方法

以下のコードを追加して、オプションの登録を行ってください。

add_action('admin_init', function() {
    register_setting('custom_settings_group', 'custom_option');
});

Q&A

add_options_page() の代わりに add_menu_page() を使うべきですか?

add_menu_page() は管理メニュー全体に新しいメニューを追加する関数です。「設定」メニューの中に追加するなら add_options_page() を使います。

設定を保存できるようにするにはどうすればいいですか?

register_setting() を使って設定を登録し、options.php にデータを送信するフォームを作成してください。

特定のユーザーだけが設定を変更できるようにするには?

add_options_page()capability 引数で適切な権限 (manage_options) を設定してください。

まとめ

add_options_page() は、WordPressの管理画面の「設定」メニュー内に独自の設定ページを追加するための関数です。プラグインやテーマのオプション設定を提供する際に便利です。

また、設定の保存には register_setting() を使用し、値の取得には get_option() を利用します。

適切なフック (admin_menuadmin_init) を使うことで、正しく動作させることができます。

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

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次