work.log

元エンジニアの備忘録的ブログ

WordPressのwp_optionsテーブルって結構便利

投稿:2014-03-19 19:33  更新:

WordPress の wp_options テーブルが結構便利と今更ながら思ったのでメモ。

wp_options テーブルを SELECT するとたまに JSON っぽいデータを見かけるのですが、アレってどうやって整形してるのと思ったのが発端です。

こんなやつ
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 テーブルのメモでした。

おすすめのVPSサーバ

  • OSが選べる
  • VPS同士でLANが組める
  • 複数台構成向き

このブログで使っています。

  • 転送量が多いサービスに
  • 借りてるのは3年間一度もdown無し!

よく見られている記事

  • 本日
  • 週間
  • 月間