プラグインの設定ページを作成してデータを保存・利用する方法

WordPressプラグイン

プラグインを作成して、プラグイン利用者が設定を変更できるように、ちょっとしたデータを保存できる設定ページを作成したいときの方法について。

設定ページの作成に関しては、下のリンクに詳しい情報があります。
設定ページの作成 – 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');
}

参考:register_setting()

add_actionを使いadmin_initに作成したadmin_my_option関数をフックさせます。

add_action( 'admin_init', 'admin_my_option' );

この時点で管理画面の表示は下のようになります。
「New Option Name」のテキスト欄に適当な名前を入力して「変更を保存」ボタンをクリックするとデータが保存されてます。

このコードでは、保存されたデータを表示するようになっているので、保存をしたあとに設定した名前がテキスト欄に表示されます。

plugin-setting

スポンサーリンク

コメント

タイトルとURLをコピーしました