2026年8月7日
2026年8月7日
WordPressのSettings APIを使った設定ページ作成
はじめに
WordPressのプラグインやテーマ開発において、ユーザーが利用するための設定ページを提供することは非常に重要です。しかし、その実装には複雑な手続きが必要となります。この記事では、Settings APIを使用して簡単かつ効率的にカスタム設定ページを作成する方法について説明します。
症状・背景
このテーマが必要になる主な場面:
- ユーザーがプラグインやテーマの機能を調整したい場合
- 複数のオプションフィールドを管理したい場合
- グローバル設定を保存したい場合
- パフォーマンスに影響を与えない方法でデータを保存したい場合
手順・設定方法
ステップ1: Settings APIを使用した初期化と登録
# カスタム設定ページの初期化を行う関数を呼び出す
add_action( 'admin_init', 'my_custom_settings_api_init' );
# カスタム設定ページを作成する関数を呼び出す
add_action( 'admin_menu', 'my_custom_settings_page' );
ステップ2: 設定セクションの登録
function my_custom_settings_api_init() {
# 設定セクションの初期化
add_settings_section(
'my_custom_setting_section',
__( 'カスタム設定', 'textdomain' ),
'my_custom_setting_section_callback',
'my_custom_page_slug'
);
# カスタムフィールドの登録
register_setting( 'my_custom_setting_section', 'setting_name_1' );
}
ステップ3: 設定オプションの登録
function my_custom_settings_api_init() {
add_settings_field(
'setting_name_1',
__( '設定名1', 'textdomain' ),
'my_setting_callback_function',
'my_custom_page_slug',
'my_custom_setting_section'
);
}
ステップ4: 設定ページのテンプレート作成
function my_custom_settings_page() {
add_options_page(
__( 'カスタム設定', 'textdomain' ),
__( 'カスタム設定', 'textdomain' ),
'manage_options',
'my_custom_page_slug',
'my_custom_settings_page_callback'
);
}
# 設定ページの表示関数
function my_custom_settings_page_callback() {
?>
<div class="wrap">
<h2><?php _e( 'カスタム設定', 'textdomain' ); ?></h2>
<?php settings_errors(); ?>
<form action="options.php" method="post">
<?php
// ページのオプションを処理するための設定フォームHTMLを作成します。
settings_fields( 'my_custom_setting_section' );
do_settings_sections( 'my_custom_page_slug' );
submit_button();
?>
</form>
</div>
<?php
}
注意事項
- セットアップ時のエラーを回避するために、必ずプラグインのアクティベーションやテーマのアクトビケーション時に初期化関数が呼び出されるようにする。
- グローバルな設定値は
options.php経由で保存されるため、その内容を適切に管理すること。 - 重要なデータを扱う場合はセキュリティ対策を施す。例えば、フィールド名やメタボックスの名前空間を独自化する。
- シリアライズされたオプションの使用はパフォーマンスに影響を与える可能性があるため、適切な場面で利用すること。
まとめ
1. 初期化: admin_initアクションフックを使用して設定ページの初期化を行う。
2. セクション登録: add_settings_section()関数を利用してカスタムセクションを追加する。
3. フィールド登録: register_setting(), add_settings_field()を使ってオプションフィールドを定義する。
4. テンプレート作成: カスタム設定ページのテンプレートを作成し、settings_fields()とdo_settings_sections()関数を使用してフォーム要素を生成する。
関連記事: