WordPress のプラグインでは設定データを update_option() で wp_options テーブルに格納すると便利

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() は何度も実行して複数データを保存しても構わないと思います。用途に合わせて使い分けたいです。

コメント

コメントは受け付けていません。