【WordPress】wp_optionsのデータを操作する方法、配列を保存したときのフォーマットについて

WordPressのデータベースにはwp_optionsというテーブルがあります。

自作のプラグインやテーマの設定値を保持する用途などで使用されますが、

実際のデータの操作方法について簡単にまとめました。

wp_optionsにデータを追加する方法

第一引数には任意の識別用キー、第二引数には値を指定します。

add_option('option_data_key', 'こんにちは');

もしくは

update_option('option_data_key', 'こんにちは');

update_optionは、キーに対応するデータが存在しなかった時、add_optionを裏で呼び出してデータを登録するようになっています。
よって、add_optionを使用しないほうが簡潔なコードになることが多いです。

wp_optionsのデータを更新する方法

第一引数には任意の識別用キー、第二引数には値を指定します。

追加の方とほぼ変わらないです。

update_option('option_data_key', 'こんばんは');

wp_optionsのデータを削除する方法

第一引数には任意の識別用キーを指定します。

delete_option('option_data_key');

wp_optionsのデータを取得する方法

第一引数には任意の識別用キーを指定します。

$data = get_option('option_data_key');

第二引数には、第一引数に対応するデータが存在しなかった場合に返すデータを指定します。
何も指定しなかったときは、falseが返却されるようになっています。

$data = get_option('option_data_keys', 'そんなデータないよん'); //データが存在しない場合
echo data; //そんなデータないよん

配列を追加したときの挙動について

例として、国と首都の連想配列をwp_optionに保存します。

$val = array(
        'Japan' => 'Tokyo',
        'USA' => 'Washington, D.C.',
        'Italy' => 'Roma',
    );

update_option('capital', $val);

option_valueカラムのデータを参照すると、こうなってます。

a:3:{s:5:"Japan";s:5:"Tokyo";s:3:"USA";s:16:"Washington, D.C.";s:5:"Italy";s:4:"Roma";}

「a:(n)」の組み合わせは、n個の配列であることを表し、
「s:(n)」の組み合わせは、n文字のStringであることを表します。
WordPresで配列を wp_option に保存する際には、上記の「型・長さ情報」と、「データ」を組み合わせて保存するようになっています。
get_option()で取得したらphpで連想配列としてそのまま使用できるようになっています。

$option = get_option('capital');
echo $option['Japan']; //Tokyo

これは、phpのserialize()、unserialize()を内部で実行しているということですね。

通常はこの仕様について理解しなくても大丈夫でしょうが、把握しておいて損はないと思います。

コメント

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