WordPress

 WordPressの関数でget_option関数というものがあります。これはWordPressの設定値を取得する関数で、プラグインでもよく使用されています。また、これに対してupdate_option関数は指定したキーの値を更新する関数で。

 今回、このget_option関数で値を取得しようとするとなぜか、update_option関数で更新する前の値が取得されてしまう現象があったので、下記にその解決方法を明記しておきます。

 上記の文章を呼んで「ピンッ!」と来る人もいると思いますが、予想通り「キャッシュ」が絡んでいて、更新前の値はキャッシュ値です。WordPressではキャッシュ機能があり、どういう条件でなのかまでは調べていませんが、get_option関数で値を取得しようとするとキャッシュ値が戻ってくる場合があるようです。

 今回、オプション値を取得しようとするデータは自ら登録したデータを取得する場合です。自ら登録する場合はupdate_option関数かadd_option関数で値を登録するのですが、update_option関数は便利なもので、指定したキーが存在しない場合はadd_option関数を使用して新規に登録してくれます。

 しかし、この自動でadd_option関数を使用して登録してくれるのがくせ者です。add_option関数は下記のようになっています。

function add_option( $option, $value = ”, $deprecated = ”, $autoload = ‘yes’ )

 この中で$optionは設定するキー名。$valueはその値になります。$deprecatedは現在使用されていません。最後の$autoloadはリファレンスに下記のように書かれています。

Should this option be automatically loaded by the function wp_load_alloptions (puts options into object cache on each page load)? Valid values: yes or no.

 簡単に書くとキャッシュを有効にするかどうかを設定すると言うことです。

 update_option関数はキーが存在しない場合はadd_option関数を使用し$autoloadを「yes」にして登録を行います。その為、update_option関数を使用して値を新規に登録をするとget_option関数で取得時にキャッシュ値が帰ってきてしまうことがあるというわけです。常に最新の値を取得したい場合は面倒でも新規登録時はadd_option関数を使用し$autoloadを「no」に設定しましょう。

 大したことではないのですが、これでちょっとはまってしまったので(^^ゞ

オープンソース・ブログ構築ソフトWordPress2.7対応「導入&カスタマイズ」実践ガイド

著者/訳者:吉村 正春

出版社:秀和システム( 2009-02-26 )

定価:

単行本 ( 415 ページ )

ISBN-10 : 4798022012

ISBN-13 : 9784798022017