プラグインを作成して、プラグイン利用者が設定を変更できるように、ちょっとしたデータを保存できる設定ページを作成したいときの方法について。
設定ページの作成に関しては、下のリンクに詳しい情報があります。
設定ページの作成 – WordPress Codex 日本語版
リンク先では、設定ページの作成でデータの保存と利用方法について説明ないので、それを含めて設定ページの作成について書きます。
1.「プラグイン設定ページ」を管理画面の「設定」に追加
ここの説明は管理メニューの追加 – WordPress Codex 日本語版をもとにさらっと書きます。
プラグインの設定ページを追加するために、admin_menuにフックをして関数を登録します。
add_action('admin_menu', 'my_plugin_menu');
登録したmy_plugin_menu関数を作成してadd_options_page関数を追加して設定します。add_options_pageの最後(5番目)引数に設定したmy_plugin_options関数を作成して、そこに設定ページの表示用コードを書いていきます。
function my_plugin_menu() { add_options_page('My Plugin Options', 'My Plugin', 8, __FILE__, 'my_plugin_options'); }
参考:add_options_page()(Codex「管理メニューの追加」)
2.設定ページ(表示)の作成
my_plugin_options関数(独自関数)を作成して、その中に表示用のHTMLやPHPコードを書いていきます。
function my_plugin_options() { }
Codexの「設定ページの作成」にある総復習の所にあるコードを若干変更します。
formタグの下をwp_nonce_fieldからsettings_fields関数に変更します。
setttings_fields()に設定する引数は、register_settieng()の第1引数に設定したグループ名を設定します。
またformタグのaction=”options.php”にすることで、「変更の保存」ボタンを押したときに「データを保存しました」とデータを更新したことがわかる黄色い背景の表示もしてくれます。
<div class="wrap"> <h2>Your Plugin Name</h2> <form method="post" action="options.php"> <?php settings_fields( 'my-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> <?php submit_button(); ?> </form> </div>
register_settting()をadmin_initにフックするための関数を作成して、そこにsettings_fieldsで設定したmy-groupに登録するデータの名前をregister_setteing関数に設定します。データの名前は、inputタグにあるnameで設定している名前になります。
※formタグのaction設定でoptions.phpにしたときに、inputタグのnameに設定した名前の値を更新するので、register_settting()の値を同じ名前にします。
function admin_my_option() { register_setting('my-group', 'new_option_name'); register_setting('my-group', 'some_other_option'); register_setting('my-group', 'option_etc'); }
add_actionを使いadmin_initに作成したadmin_my_option関数をフックさせます。
add_action( 'admin_init', 'admin_my_option' );
この時点で管理画面の表示は下のようになります。
「New Option Name」のテキスト欄に適当な名前を入力して「変更を保存」ボタンをクリックするとデータが保存されてます。
このコードでは、保存されたデータを表示するようになっているので、保存をしたあとに設定した名前がテキスト欄に表示されます。
コメント