設定用ページの作成・追加方法

サブメニューページを作成・追加する方法の応用編です。
関連記事: 管理画面にサブメニューページの作成・追加方法
ここでは追加したサブメニューページで設定変更できるように編集する方法を紹介していきます。
サブメニューページである必要はないんですが、標準的な設定ページに仕上げるには一番良い方法だと思いました。
設定の追加方法の基本
設定の基本は「データベースに保存」と「データベースから取得」ですが、これらの作業はワードプレスに予め用意された関数がこなしてくれるので、データベースの操作方法の知識や関心が無くても簡単に設定を付け加えることが出来るようになっています。
一番簡単に設定を追加する方法は、ワードプレス関数「update_option」「get_option」などを使ってデータの保存と取得を行うだけです。これら保存と取得の2つの関数を使うだけで設定の追加は可能なんです。
if( $_POST[ 'some_data' ] ) { // 設定を保存する場合 update_option( 'some_data', $_POST[ 'some_data' ] ); } // 標準値を設定(設定がまだ保存されていない状態の値として) $default_value = 'default_value'; // 設定済みの値を取得(保存されていない場合は「$default_value」を取得) $data_value = get_option( 'some_data', $default_value ); // 「$data_value」を使って処理、もしくはname属性の値が「some_data」のinputタグの値に使用、などなど
ノンスやリファラーや、データの有効性チェックなどは一切省いて書いていますが、まぁ大体こんな形です。
ただ、より安全かつ簡単に設定データを扱う関数がワードプレスには用意されていますので、今回はそちらを使用した設定ページの作成・追加の方法を紹介していきます。
ワードプレス関数を用いた設定ページの作成
ワードプレスで設定を保存する方法ですが、大きく分けて2種類あります。
1つ目は「options.php」をformタグのaction属性の値として使用する方法です。こちらは「update_option」でデータを保存するフレームを自分で作成しなくても、ワードプレスに用意された設定項目を登録する関数「register_setting」やその他「settings_fields」「do_settings_sections」などの関数を使うと、登録した設定項目がそこで保存処理する仕組みが自動生成されます。
もう1つは自分で「update_option」などでデータを保存するフレームを作る方法です。「ノンス」「リファラー」「データの有効性」などを自分で精査する仕組みを作って保存します。
後者はどちらかというと一般的な方法で、ワードプレスに慣れてからでも良いと思いますが、ワードプレスに関数が用意されているので、ワードプレスを使うのであれば、後者は。慣れているなら後者の方が安心できると思いますが、ここではワードプレスが用意してくれている関数を使った標準的な方法を紹介していこうと思います。
設定項目を追加
設定を追加するための関数はいくつか用意されていますが、「register_setting」で設定項目を登録していきます。
フックさせるのはページを追加する際に使用する「admin_menu」で大丈夫です。
使い方は以下の通りです。
register_setting( $option_group, $option_name, $sanitize_callback );
設定項目毎にinputタグに与えたname属性値を「$option_name」に使用し、「$option_group」をfromタグ内で呼び出す関数の引数として使用します。
<?php function settings_page() { ?> <form method="post" action="options.php"> <?php settings_fields( $option_group ); do_settings_sections( $option_group ); ?> <label for="<?php echo $option_name; ?>">テキスト</label> <input name="<?php echo $option_name; ?>" type="text" value="<?php echo esc_attr( get_option( $option_name ) ); ?>" /> <?php submit_button(); ?> </form> ?>
こんな感じで、追加したページに書いておけば保存されるようになり、「get_option」でデータを取得することが出来るようになります。
まとめ
ポイントは以下の3つです。
- 「register_setting」と「add_submenu_page」を「admin_menu」にフック
- formタグのaction属性の値を「options.php」に
- formタグ内にphpで「settings_fields」「do_settings_sections」「submit_button」
他にも「add_settings_field」「add_settings_section」など便利な関数がありますが、基本的にはこれで大丈夫です。
ただ、関数で管理しやすくなります。
その他の関数は参照ページ「Settings API – WordPress Codex 日本語版」で確認できますので、自分なりに編集する際に試してみてください。