WordPress のプラグインはどこに設定データを格納しているかについて調べました。調べる際に以下のプラグインを解体させて頂きました。
プラグインの大きさによっては独自のテーブルを作る物もあると思いますが、ちょっとしたフラグなどのデータを保持するなら WordPress が使っている wp_options を使わせてもらいます。
PSTA を参考にサンプルコードでの説明
以下のようにデフォルトでどのようなキーが入ってくるかを定義しておきます。get_option(‘key’) で既にあるプラグインのデータを取り出せます。データがまだ無ければデフォルトで定義したデータを代入します。get_option() はデータベースにはシリアライズして格納されていますが、この関数で保存時のものを取り出せます。
1 2 3 4 5 6 7 8 9 10 11 | $this->default = Array( 'CONSUMER_KEY' => '', 'CONSUMER_SECRET' => '', 'ACCESS_TOKEN' => '', 'ACCESS_SECRET' => '', 'HEAD_TEXT' => 'New blog post: ', 'POST_TYPE' => 'post', 'GOOGLE_APIKEY' => '' ); $this->setting = get_option('tsubuyakiPublish'); if ( ! $this->setting) $this->setting = $this->default; |
保存時は以下のようにします。POST でデータが飛んできているかと思いますので、上記で定義したデフォルトのキーを頼りにデータを取得し配列を作ります。その配列を update_option(‘key’, $array) のような形で保存します。配列は自動的にシリアライズされて WordPress データベースの wp_options テーブルに格納されます。
1 2 3 4 5 6 7 8 9 10 | check_admin_referer('tsubuyakiPublish'); $post_data = stripslashes_deep($_POST); $setting = array(); foreach ( $this->default as $key => $calue ) { if ($key != 'error_mes') { $setting[$key] = $post_data[$key]; } } $this->setting = $setting; update_option('tsubuyakiPublish', $setting); |
独自でテーブルを作って保存しても良いですが、こうすればデータを効率的に管理できるので便利です。update_option() は何度も実行して複数データを保存しても構わないと思います。用途に合わせて使い分けたいです。
コメント