WordPressの管理画面に独自のオプションを保存するための方法です。
書籍『WordPressプラグイン開発のバイブル』の中では、紹介しきれなかった部分です。
Settings APIとは
Settings APIは、テーマやプラグインから管理画面に独自の設定保存領域を作るためのAPIで、バリデーションや保存などの大部分をWordPressに任せることができる便利なものです。
Settings API利用の基本的な流れ
もっともシンプルに項目を追加する流れは、以下のようになります。
- admin_init フックにて、以下の3つを登録
- セクション:管理画面のどこに表示するか ( add_settings_section )
- フィールド:input, selectなど (add_settings_field )
- 設定:name 要素 ( register_setting )
- セクションやフィールドのコールバック関数を定義する。
ここで、管理画面に表示させるべきフォームや説明文などを決める。 - 保存される値のサニタイズ用の関数を定義する
自分自身でテーブルなどを書く手間がすべて省けますので、楽ちんです。
関数は3つ(全部admin_initにフックします)
1. add_setteings_section
add_settings_section(
'ogp_settings', // id
__( 'OGP Settings', 'nskw-ogp-generator' ), // 表示する文字
'nskw_add_settings_section', // コールバック関数
'media' // どのページに追加するか。
);
上記のように使います。ここで指定したIDは、次のフィールドを登録するときの印になります。
3つめはコールバック関数の名前で、セクション内で実行される関数です。出力する場合には、echoします。
2.add_settings_field
add_settings_field(
'ogp_img_field', // ID
__( 'Default Image', 'nskw-ogp-generator' ), // 表示する文字
'nskw_ogp_img_field', // コールバック関数
'media', // どのページに追加するか
'ogp_settings' // そのセクションに表示するか
);
ここで指定したIDは次の設定を登録する際に使います。
3つめはコールバック関数の名前で、inputなどの要素を出力します。
3. register_setting
register_setting( 'media', 'ogp_img_field', 'esc_url' );
どのページ(media)に、なんという名前のsetting(ogp_img_field)を追加するかを登録します。最後のesc_urlはサニタイズするための関数名を指定します。自分で定義するか、年齢などの数値であればintvalなどでもよいです。
全体像
これらをまとめると以下のようになります。
// セッティングAPIを使ってみよう
add_action( 'admin_init', 'nskw_ogp_settings' );
function nskw_ogp_settings() {
// セクションを登録
add_settings_section(
'ogp_settings',
__( 'OGP Settings', 'nskw-ogp-generator' ),
'nskw_add_settings_section',
'media'
);
// フィールドを登録
add_settings_field(
'ogp_img_field',
__( 'Default Image', 'nskw-ogp-generator' ),
'nskw_ogp_img_field',
'media',
'ogp_settings'
);
// nameを登録して保存されるようにする
register_setting( 'media', 'ogp_img_field', 'esc_url' );
}
// セクション用の関数
function nskw_add_settings_section() {
_e( 'This image will be used in home page, archive pages and posts/pages which don\'t have post thumbnails', 'nskw-ogp-generator' );
}
// ogp-img-field用の関数
function nskw_ogp_img_field() {
?>
<input id="ogp_img_field" name="ogp_img_field" type="text" value="<?php form_option('ogp_img_field'); ?>" />
<?php
printf(
__( 'Url of the default image. At least 600x315 pixels, but it\'s better to have a bigger one.<br />You can upload your image <a href="%s" target="_blank">here</a>', 'nskw-ogp-generator' ),
admin_url( 'media-new.php' )
);
}
これまでに説明していないのは2つのコールバック関数です。一つ目がセクションに登録した文章を出力するだけのもの、2つ目はinputを出力している部分です。inputのname要素は、register_settingフィールドで登録した名前にします。
また、textフィールドのvalueにあるform_option()というのは、オプションのキーを指定するとフォーム用にサニタイズしてechoしてくれる関数です。
以上です。






コメント
コメント一覧 (1件)
[…] WordPressの管理画面に独自のオプション保存をするためのSettings APIの使い方 – Shinichi Nishikawa’s […]