DBテーブルのwp_optionsやwp_postmetaに配列っぽいデータが保存されているのを見ることがある。たとえば wp_postmetaでは_”wp_attachment_metadata”というキーに”a:5:{s:5:”width”;s:3:”145″;s:6:”height”;s:2:”74″;s:14:”hwstring_small”;s:23:”height=’65’ width=’128′”;s:4:”file”;s:35:”2010/…”というようなデータが保存されている。画象を添付した際のパスやサイズなどのメタデータである。
この形式を自分でも利用することができる。
例えばwp_optionsに保存するには、
INSERT INTO wp_options(option_id, blog_id, option_name, option_value, autoload) VALUES(null, 0, ‘my_messages’, maybe_serialize( $messages ), ‘yes’)
というようなSQLを実行すればよい。連想配列$messagesをシリアライズしたものをoption_valueにセットする。maybe_serialize()は、WordPressの関数である。
このデータを取得するには、SQLでSELECTして得た値を、
$messages = maybe_unserialize($result->option_value);
とすることで連想配列にセットされる。
ちょっとした情報を保存したいならプラグイン用にテーブルを作成するのではなく、 wp_optionsに保存する手段もあるのだ。Contact Form 7 のコードを見てて、この仕組みがやっと分かった。