1. TOPTOP
  2. Webサービス

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

wordpress_plugin_administrator_setting_class_1

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

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

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

wordpress_plugin_administrator_setting_class_4_1

public function page_init() {

}

したがって独自関数のpage_initメソッドをPHPの文法にしたがって書くだけでエラーは消えます。GitHubにコード(新しいタブで開く)を公開していますので、ご興味のある方は参考にしてください。

設定ページの初期化メソッドの内容を定義

page_initメソッドを記述しただけでは何も動作しませんので、中身を具体的に定義します。

設定項目と無害化用コールバックの登録

    register_setting(
      'my_option_group',
      'my_option_name',
      array( $this, 'sanitize' )
    );

register_setting関数(新しいタブで開く)は、設定ページにおける設定項目と無害化用コールバック関数を登録します。ただしクラス構文内でregister_setting関数を使用する場合は、第三引数を配列にして1つ目の要素を”$this”に、2つ目の要素にメソッド名を登録します。sanitizeメソッドは後ほど定義します。

設定ページでヘッダを共有する

    
    add_settings_section(
      'setting_section_id',
      'My Custom Settings',
      array( $this, 'print_section_info' ),
      'my-setting-admin'
    );

add_settings_section関数(新しいタブで開く)は、WordPress 設定ページでヘッダを共有するいくつかの設定のまとまりです。プラグイン内で新規ページを作成するほか、既存の設定ページにセクションを追加できます。第三引数の2番目の要素としている、print_section_info関数は後ほど定義します。

設定項目を追加する

設定ページで設定する項目は、今回の例ではIDとタイトルです。それぞれ設定項目を設定ページとセクションへ登録するためのadd_settings_field関数(新しいタブで開く)を使います。

IDフィールド

    add_settings_field(
      'id_number', // ID
      'ID Number', // Title
      array( $this, 'id_number_callback' ),
      'my-setting-admin',
      'setting_section_id'
    );

Titleフィールド

    add_settings_field(
      'title',
      'Title',
      array( $this, 'title_callback' ),
      'my-setting-admin',
      'setting_section_id'
    );

なおGitHub(新しいタブで開く)でもコードを公開していますので、ご興味のある方は合わせて参考にしてください。

設定ページの実行

wordpress_plugin_administrator_setting_class_4_2

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