WordPress の wp_options テーブルが結構便利と今更ながら思ったのでメモ。
wp_options テーブルを SELECT するとたまに JSON っぽいデータを見かけるのですが、アレってどうやって整形してるのと思ったのが発端です。
こんなやつ
a:2:{s:6:”string”;s:4:”hoge”;s:3:”num”;i:123;}
a:2:{s:6:”string”;s:4:”hoge”;s:3:”num”;i:123;}
調べるとコレって連想配列のデータらしくて、こんな感じに登録するだけで勝手に整形してくれる模様。
$value = array( 'string' => 'hoge', 'num' => 123 ); update_option( 'my_option', $value );
で、wp_options を SELECT するとこうなる。
mysql> SELECT * FROM wp_options WHERE option_name = 'my_option'; +-----------+-------------+------------------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+------------------------------------------------+----------+ | 21195 | my_option | a:2:{s:6:"string";s:4:"hoge";s:3:"num";i:123;} | yes | +-----------+-------------+------------------------------------------------+----------+
そして、使う時は get_option() してやるとまた連想配列としてデータ取得できる。
初めて知ったけど便利!
ちなみに、ただの配列の場合はこんな感じに登録される模様。
mysql> SELECT * FROM wp_options WHERE option_name = 'my_option'; +-----------+-------------+--------------------------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+--------------------------------------+----------+ | 21195 | my_option | a:3:{i:0;i:123;i:1;i:456;i:2;i:789;} | yes | +-----------+-------------+--------------------------------------+----------+
wp_options テーブルの option_value カラムは LONGTEXT 型なので、4GB までのテキストデータを保存できるようになってるみたいです。
Codex 曰く、変更頻度が少なくて比較的小さいデータを推奨と言っているので無茶はいけないですが、アクセス解析のタグなんかの固有データはここにぶち込んだ方が便利じゃないかと密かに考え中。
多分、変更云々の話は wp_options のデータって WordPress でキャッシュするから変更頻度が激しいと意味なくなるよって事だと思う。
初回にこのオプションをどうやって登録するかを考えないといけませんが、これまで functions.php にベタ書きしてた個別の値はスッキリできそうな感じです。
以上、簡単ですが wp_options テーブルのメモでした。