jQuery+JSONPで商品検索[jQuery+楽天API#1]
2009/03/11
Jan. 10, 2010
WordPressで独自プラグインを作ったら、プラグイン固有のオプション(設定)ページを作る機会もあると思います。そこで今回はプラグインからオプションページを作る方法を調べてみました。WP2.7以上限定です。
オプションページの作り方はしっかりと公式サイトに載ってますのでそちらを参考に。
英語版ページ:Creating Options Pages « WordPress Codex
このページにはWP2.7から使えるようになった関数を使ったサンプルが掲載されてます。これらを使うとこれまでより簡単にオプションページを作成できるみたいなので、2.7用のコードをピックアップします。
まずはプラグインヘッダを書きます。
/* Plugin Name: Create Options Pages Plugin URI: http:/scianto.net/ Description: オプションページを作成するサンプルプラグイン Version: 1.0 Author: Paon Author URI: http://scianto.net/ */
add_action('admin_menu', 'baw_create_menu');
add_action関数を使ってアクションフックadmin_menuに関数を登録します
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]'');
__FILE__をつかってファイル名を指定しています。もちろん、任意の文字列でもOKです。add_action( 'admin_init', 'register_mysettings' );
add_action関数でadmin_initアクションフックに対して、オプションページを表示するための関数を登録&実行します。admin_initは管理画面にアクセスしたときにどのフックよりも先に実行するためのフック?のようです(英語弱いので自信ない・・・)。詳しくは以下を参照。
先の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 );
詳しくはリファレンスを参照してください。
実際にオプションページに表示する内容を書き出す関数です。
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から呼び出し加工するようにしなければならないと思います。このあたりは当面の課題ということで・・・。今回はここまで。
0