その3の続きです。前回はエラー画面が表示されていたところで作業を終了しました。エラーが発生する理由は、コンストラクタで使用することを明示している、独自関数のpage_initメソッドが存在しないためです。
設定ページの初期化メソッドの作成
[php]
public function page_init() {
}
[/php]
したがって独自関数のpage_initメソッドをPHPの文法にしたがって書くだけでエラーは消えます。GitHubにコードを公開していますので、ご興味のある方は参考にしてください。
設定ページの初期化メソッドの内容を定義
page_initメソッドを記述しただけでは何も動作しませんので、中身を具体的に定義します。
設定項目と無害化用コールバックの登録
[php]
register_setting(
‘my_option_group’,
‘my_option_name’,
array( $this, ‘sanitize’ )
);
[/php]
register_setting関数は、設定ページにおける設定項目と無害化用コールバック関数を登録します。ただしクラス構文内でregister_setting関数を使用する場合は、第三引数を配列にして1つ目の要素を”$this”に、2つ目の要素にメソッド名を登録します。sanitizeメソッドは後ほど定義します。
設定ページでヘッダを共有する
[php]
add_settings_section(
‘setting_section_id’,
‘My Custom Settings’,
array( $this, ‘print_section_info’ ),
‘my-setting-admin’
);
[/php]
add_settings_section関数は、WordPress 設定ページでヘッダを共有するいくつかの設定のまとまりです。プラグイン内で新規ページを作成するほか、既存の設定ページにセクションを追加できます。第三引数の2番目の要素としている、print_section_info関数は後ほど定義します。
設定項目を追加する
設定ページで設定する項目は、今回の例ではIDとタイトルです。それぞれ設定項目を設定ページとセクションへ登録するためのadd_settings_field関数を使います。
IDフィールド
[php]
add_settings_field(
‘id_number’, // ID
‘ID Number’, // Title
array( $this, ‘id_number_callback’ ),
‘my-setting-admin’,
‘setting_section_id’
);
[/php]
Titleフィールド
[php]
add_settings_field(
‘title’,
‘Title’,
array( $this, ‘title_callback’ ),
‘my-setting-admin’,
‘setting_section_id’
);
[/php]
なおGitHubでもコードを公開していますので、ご興味のある方は合わせて参考にしてください。
設定ページの実行
ここまで記述したコードで設定ページを確認すると、3つのエラーが設定画面に表示されます。理由はprint_section_info、id_number_callback、title_callbackの各独自関数が定義されていないためです。次回のその5において、sanitaizeも含めた独自関数の定義を行います。