概要
add_theme_page
関数は、WordPressテーマにカスタム管理画面のサブメニューを外観メニューに登録するための関数です。この関数を使用することで、テーマの設定やオプションを管理するためのインターフェースを簡単に作成できます。以下のような機能を実装する際によく使われます。
- テーマオプションの設定ページの追加
- カスタムスタイルやスクリプトの設定ページ
- テーマのインストール手順や設定ガイドの提供
- SEO設定ページの追加
- ウィジェット設定のUI提供
- テーマに関連するカスタム投稿タイプの管理
- ナビゲーションメニューのカスタマイズ設定
- 色やレイアウトの選択肢提供
構文
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
アクションにフックし、動的にページタイトルを変更します。表示されるメニューのタイトルは、関数内で設定したタイトルになります。