
WordPressで独自プラグインを作ったら、プラグイン固有のオプション(設定)ページを作る機会もあると思います。そこで今回はプラグインからオプションページを作る方法を調べてみました。WP2.7以上限定です。
オプションページの作り方はしっかりと公式サイトに載ってますのでそちらを参考に。
英語版ページ:Creating Options Pages « WordPress Codex
このページにはWP2.7から使えるようになった関数を使ったサンプルが掲載されてます。これらを使うとこれまでより簡単にオプションページを作成できるみたいなので、2.7用のコードをピックアップします。
ステップ1
まずはプラグインヘッダを書きます。
/* Plugin Name: Create Options Pages Plugin URI: http:/scianto.net/ Description: オプションページを作成するサンプルプラグイン Version: 1.0 Author: Paon Author URI: http://scianto.net/ */
ステップ2
add_action('admin_menu', 'baw_create_menu');
add_action関数を使ってアクションフックadmin_menuに関数を登録します
ステップ3
メニューの追加
add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page',plugins_url('/images/icon.png', __FILE__));
add_menu_page関数はトップレベルメニューを追加します。
書式
add_menu_page(''page_title'', ''menu_title'', ''access_level/capability'', ''file'', ''[function]'', ''[icon_url]'');
- page_title
- オプションページのタイトルです。head内のtitle要素の内容です。
- menu_title
- メニューに表示されるときの名前です。
- access_level/capability
- オプションページを呼び出したり、編集するために必要なユーザーレベル。ここでは管理者をあらわす[administrator]。[10]でもいけます。
- file
- オプションページを表示するためのページ識別子。
「wp-admin/admin.php?page=ページ識別子」としてアクセスするための文字列になります。ここでは定義済み定数__FILE__をつかってファイル名を指定しています。もちろん、任意の文字列でもOKです。 - function
- ページを表示するための実行関数。
- icon_url
- メニューにカスタムアイコンを追加します。WP2.7から使えます。
コンテンツ表示関数の登録
add_action( 'admin_init', 'register_mysettings' );
add_action関数でadmin_initアクションフックに対して、オプションページを表示するための関数を登録&実行します。admin_initは管理画面にアクセスしたときにどのフックよりも先に実行するためのフック?のようです(英語弱いので自信ない・・・)。詳しくは以下を参照。
ステップ4
先のadmin_initにフックさせたregister_mysettings関数を定義します。
function register_mysettings() {
register_setting( 'baw-settings-group', 'new_option_name' );
register_setting( 'baw-settings-group', 'some_other_option' );
register_setting( 'baw-settings-group', 'option_etc' );
}
ここで登場した新しい関数register_settingはformから送信した値をデータベースに登録したりサニタイズするための関数のようです。
書式
register_setting( $option_group, $option_name, $sanitize_callback );
- $option_group
- 設定のグループ名。ここで指定した名前を次のステップで使うsettings_fields関数の引数に指定します。
- $option_name
- 登録するオプションの名前。input要素などのname属性を指定します。
- sanitize_callback
- オプションの値をサニタイズするためのコールバック関数。
詳しくはリファレンスを参照してください。
ステップ5
実際にオプションページに表示する内容を書き出す関数です。
function baw_settings_page() {
<div class="wrap">
<h2>Your Plugin Name</h2>
<form method="post" action="options.php">
<?php settings_fields( 'baw-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">New Option Name</th>
<td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Some Other Option</th>
<td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Options, Etc.</th>
<td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
}
(*上のコードは見やすいように一部変更していますので構文として正しくありません。ご注意ください。)
setting_fields関数を使うことで、これまで必要だったhiddenフィールドやnonceフィールドを自動で追加してくれるようになったのでずいぶん楽になりました^ ^。
ところで、form要素のaction属性値がoptions.phpになっています。これはformから送信されたデータの登録やら書き換えなんかをやってくれる便利な関数が詰まっているようです。
options.phpはwp-admin/options.phpにあります。
以上でオプションページを追加することができますね。
ただ、これだけだと値を登録することしかできませんよね?。実際はその値を使って何かに反映させたいわけですから、値をDBから呼び出し加工するようにしなければならないと思います。このあたりは当面の課題ということで・・・。今回はここまで。

名前:paon
comment
コメントはまだありません。
この記事につけられたコメントのRSS