wp-mailの送信先を簡単に変更する WordPressプラグインを作ってみた
これの作成の時に使った「Settings API」をより深掘りしてみる。https://wpdocs.osdn.jp/Settings_API

Settings APIって?

Settings APIを使えば、WordPressの管理画面に独自の設定画面を作成することができる。 新規でプラグインを作成するときはバリデーションとか保存の部分をWordPressが色々やってくれるので 保守の面でもSettings APIを使った方が安全。 今回はプラグインの設定ページを想定して作ってみる。
目次へ戻る

Settings APIの使い方

作業的には、主に3つの工程で作ることができる。
  1. セクションを追加 → add_settings_section
  2. フィールドを追加 → add_settings_field
  3. セクションの設定を追加 → register_setting
アクションフックのadmin_initで引っ掛けて使う。

セクションを追加

add_settings_section( $id, $title, $callback, $page );
管理画面のどこに設置するかなどを決める。
  • $id → タグのid属性に振られる値(ここで指定したIDは次の項目のフィールドを追加する際に利用する
  • $title → セクションのタイトル
  • $callback → コールバック関数 セクションの中で実行される関数をここで指定する(セクションの紹介文などを出力したりする
  • $page → セクションを表示させるページをここで指定する

フィールドを追加

add_settings_field( $id, $title, $callback, $page, $section, $args );
表示するフィールドを決める。
  • $id → タグのid属性に振られる値
  • $title → フィールドのタイトル
  • $callback → コールバック関数 フィールドなどを出力をする関数
  • $page → フィールドを表示する設定ページのタイプ
  • $section → ボックスを表示する設定ページのセクション
  • $args → 追加の引数

セクションの設定を追加

register_setting( $option_group, $option_name, $sanitize_callback );
セクションの設定を決める。
  • $option_group → どのページに追加をするか
  • $option_name → オプションの名前
  • $sanitize_callback → 適用する関数
目次へ戻る

完成形

ざっくり作るとこんな感じです。
class Test_Plugin_Option_Settings {
    private function __construct() {
        add_action( 'admin_init', [ $this, 'setup_sections' ] );
        add_action( 'admin_init', [ $this, 'setup_fields' ] );
    }
    public function setup_sections() {
        add_settings_section( 'test', 'test_settings', [], 'test' );
    }
    public function setup_fields() {
        add_settings_field( 'test_fields', 'テストフィールド', [ $this, 'field_callback' ], 'test', 'test_section', [ 'type' => 'text', 'desc' => 'これはテストフィールドです。' ] );
        register_setting( 'test', 'test_fielts', [ $this, $field_validator ] );
    }
    public function field_callback( $field ) {
        // ここに表示したいフィールド
        return $field;
    }
    public function field_validator( $value ) {
        // ここに適用したいバリデーション
        return $value;
    }
}
field_callbackに表示させたいフィールドを。 field_validatorにはsubmitされる時のバリデーションを設定することができます。 結構簡単に設定ページが作成できるので使ってみてはいかがでしょうか??
目次へ戻る
この記事をシェアする:

東日本橋の制作・開発会社 プレスマンのスタッフブログ