ワードプレスのadd_theme_page関数の使用方法・解説

概要

add_theme_page関数は、WordPressテーマにカスタム管理画面のサブメニューを外観メニューに登録するための関数です。この関数を使用することで、テーマの設定やオプションを管理するためのインターフェースを簡単に作成できます。以下のような機能を実装する際によく使われます。

  1. テーマオプションの設定ページの追加
  2. カスタムスタイルやスクリプトの設定ページ
  3. テーマのインストール手順や設定ガイドの提供
  4. SEO設定ページの追加
  5. ウィジェット設定のUI提供
  6. テーマに関連するカスタム投稿タイプの管理
  7. ナビゲーションメニューのカスタマイズ設定
  8. 色やレイアウトの選択肢提供

構文

add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function );

パラメータ

  • $page_title (string) : サブメニューの表示名
  • $menu_title (string) : メニューのタイトル
  • $capability (string) : メニューを表示するために必要な権限
  • $menu_slug (string) : メニューのスラッグ
  • $function (callable) : メニューがクリックされたときに実行されるコールバック関数

戻り値

この関数は、メニューが正常に追加された場合にtrueを返します。問題が発生した場合はfalseを返します。

関連する関数

使用可能なバージョン

add_theme_page関数は、WordPress 2.7以降で使用可能です。

コアファイルパス

この関数は、wp-includes/theme.phpファイルに含まれています。

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 基本的な使用例

add_theme_page(
    'Sample Page Title', // ページタイトル
    'Sample Menu Title', // メニュータイトル
    'manage_options',    // 権限
    'sample-menu-slug',  // メニュースラッグ
    'sample_menu_callback' // コールバック関数
);

function sample_menu_callback() {
    echo '<h1>Sample Page</h1>';
    echo '<p>This is a sample admin page.</p>';
}

このコードは、シンプルなテーマ設定ページを作成します。メニュー項目をクリックすると、「Sample Page」が表示されます。

サンプル2: オプションの保存

add_theme_page('Theme Settings', 'Theme Settings', 'manage_options', 'theme-settings', 'theme_settings_page');

function theme_settings_page() {
    if (isset($_POST['submit'])) {
        update_option('my_theme_option', $_POST['my_option_name']);
    }
    $value = get_option('my_theme_option', '');
    ?>
    <form method="post" action="">
        <label for="my_option_name">Option Name:</label>
        <input type="text" name="my_option_name" value="<?php echo esc_attr($value); ?>" />
        <input type="submit" name="submit" value="Save" />
    </form>
    <?php
}

このコードは、テーマの設定を保存するためのオプションフィールドを表示します。フォームに入力した値は、オプションとして保存されます。

サンプル3: 複数フィールドの使用

add_theme_page('Custom Settings', 'Custom Settings', 'manage_options', 'custom-settings', 'custom_settings_page');

function custom_settings_page() {
    if (isset($_POST['submit'])) {
        update_option('custom_setting_1', $_POST['setting_1']);
        update_option('custom_setting_2', $_POST['setting_2']);
    }
    ?>
    <form method="post" action="">
        <label for="setting_1">Setting 1:</label>
        <input type="text" name="setting_1" value="<?php echo esc_attr(get_option('custom_setting_1')); ?>" />

        <label for="setting_2">Setting 2:</label>
        <input type="text" name="setting_2" value="<?php echo esc_attr(get_option('custom_setting_2')); ?>" />

        <input type="submit" name="submit" value="Save Settings" />
    </form>
    <?php
}

このコードは、2つの設定オプションを持つフォームを作成し、それぞれの値をWordPressのオプションとして保存します。

サンプル4: 設定ページにCSSを追加

add_theme_page('Styled Page', 'Styled Page', 'manage_options', 'styled-page', 'styled_page_callback');

function styled_page_callback() {
    echo '<style> h1 { color: blue; } </style>';
    echo '<h1>Styled Page with Custom CSS</h1>';
}

このサンプルでは、管理ページにカスタムCSSをインラインで追加して、見た目をカスタマイズします。

サンプル5: パラメータを使ったメニューの動的変更

function my_dynamic_menu() {
    $title = 'My Dynamic Theme Page';
    add_theme_page($title, $title, 'manage_options', 'dynamic-menu', 'dynamic_menu_callback');
}

add_action('admin_menu', 'my_dynamic_menu');

function dynamic_menu_callback() {
    echo '<h1>' . esc_html(get_admin_page_title()) . '</h1>';
}

このコードは、admin_menuアクションにフックし、動的にページタイトルを変更します。表示されるメニューのタイトルは、関数内で設定したタイトルになります。

この関数について質問する


上の計算式の答えを入力してください