WordPressでは、管理画面に独自の設定ページを追加することで、オリジナルのプラグインやテーマ設定をユーザーが簡単に変更できるようにすることができます。この記事では、add_menu_pageを使った基本的な手順から、設定値の保存やフォームの設計まで、実践的な実装方法を紹介します。
add_menu_pageとは?
add_menu_page()は、WordPressの管理メニューに新しいトップレベルのメニュー項目を追加するための関数です。これにより、独自の設定ページを管理画面に統合することができます。
構文は以下の通りです。
add_menu_page()の構文
add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function, string $icon_url = '', int $position = null );
基本的な設定画面を追加するサンプルコード
以下のコードをfunctions.phpまたはプラグインファイルに記述することで、管理画面に「サイト設定」という独自ページを追加できます。
functions.php:設定ページの追加
add_action('admin_menu', 'my_custom_settings_menu');
function my_custom_settings_menu() {
add_menu_page(
'サイト設定',
'サイト設定',
'manage_options',
'my-site-settings',
'my_site_settings_page',
'dashicons-admin-generic',
60
);
}
function my_site_settings_page() {
echo '<div class="wrap">';
echo '<h1>サイト設定</h1>';
settings_errors(); // 保存後の「設定を保存しました」メッセージを表示
echo '<form method="post" action="options.php">';
settings_fields('my_settings_group');
do_settings_sections('my-site-settings');
submit_button();
echo '</form>';
echo '</div>';
}
設定項目を保存する処理
続いて、保存する項目の登録処理です。admin_initで設定項目を登録します。
functions.php:設定項目の登録
add_action('admin_init', 'my_settings_init');
function my_settings_init() {
register_setting('my_settings_group', 'my_option_text', array(
'sanitize_callback' => 'sanitize_text_field',
));
add_settings_section(
'my_settings_section',
'基本設定',
null,
'my-site-settings'
);
add_settings_field(
'my_option_text',
'テキスト設定',
'my_option_text_callback',
'my-site-settings',
'my_settings_section'
);
}
function my_option_text_callback() {
$value = get_option('my_option_text', '');
echo '<input type="text" name="my_option_text" value="' . esc_attr($value) . '" />';
}
sanitize_callbackは省略しない
register_setting()の第3引数($args)でsanitize_callbackを指定しないと、保存時のサーバー側サニタイズが一切行われません。フォームから送信された値がそのままデータベースに保存されるため、sanitize_text_fieldなど、値の性質に合った関数を必ず指定してください。設定の読み込みと活用
設定した値は、以下のようにテンプレートや処理の中で呼び出して利用できます。
保存した設定値の取得と出力
$text = get_option('my_option_text');
echo esc_html($text);
アイコンや表示位置をカスタマイズ
add_menu_pageの引数で、ダッシュボードアイコンの指定や、表示位置を自由に調整可能です。
- アイコン: dashicons-admin-site など
- 表示位置: 数字が小さいほど上に表示されます(例:60で「外観」の下)
よくある質問(FAQ)
Qadd_menu_page()で設定ページを追加する基本的なコードは?
Aadd_action(‘admin_menu’, function(){ add_menu_page(‘設定タイトル’, ‘メニュー名’, ‘manage_options’, ‘my-settings’, ‘my_settings_page’); })と、コールバック関数my_settings_pageをfunctions.phpに実装します。
Q設定値をWordPressのオプションに保存・取得するには?
Asettings_fields()とdo_settings_sections()でWordPress標準のオプションAPIを使ったフォームを作成します。update_option()・get_option()で値を保存・取得します。register_setting()にはsanitize_callbackを必ず指定しましょう。
Q設定ページのフォーム送信後に保存完了メッセージを表示するには?
ASettings API(options.php経由のフォーム)を使っていれば、保存後settings-updated=true付きで自動的に元のページへリダイレクトされるため、手動でwp_redirect()を呼ぶ必要はありません。設定ページのコールバック内でsettings_errors()を呼び出すだけで、保存完了メッセージが自動的に表示されます。
まとめ
WordPress管理画面に独自の設定ページを追加することで、テーマやプラグインの利便性が大きく向上します。add_menu_pageを活用し、ユーザーが扱いやすいUIと安全な保存処理を実装することで、より洗練されたWordPress開発が可能になります。

