WordPressプラグインで管理画面の設定ページを作成する(クラス構文編 その4 ~ 設定画面を初期化するメソッドの定義)

wordpress_plugin_administrator_setting_class_1
あわせて読みたい
WordPressプラグインで管理画面の設定ページを作成する(クラス構文編 その3 ~ 設定画面を表示するメソ... https://e-yota.com/webservice/wordpress_plugin_administrator_setting_class_2/ その2ではMySettingsPageクラス内でプロパティとコンストラクタを定義しました。今回...

その3の続きです。前回はエラー画面が表示されていたところで作業を終了しました。エラーが発生する理由は、コンストラクタで使用することを明示している、独自関数のpage_initメソッドが存在しないためです。

目次

設定ページの初期化メソッドの作成

wordpress_plugin_administrator_setting_class_4_1

[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でもコードを公開していますので、ご興味のある方は合わせて参考にしてください。

設定ページの実行

wordpress_plugin_administrator_setting_class_4_2

ここまで記述したコードで設定ページを確認すると、3つのエラーが設定画面に表示されます。理由はprint_section_info、id_number_callback、title_callbackの各独自関数が定義されていないためです。次回のその5において、sanitaizeも含めた独自関数の定義を行います。

wordpress_plugin_administrator_setting_class_1

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次