ワードプレスのoption値を保存するときのautoloadの設定時の挙動について詳しく解説いたします

ワードプレスの様々な設定を保存する関数

ワードプレスには、設定等を保存するのによく使われるoption関数群が用意されています。このデータはデータベースのwp_optionテーブルに格納されます。
option値を保存するコードは下記のようになります。

オプションの追加(既に設定名で存在する場合は無視されます)

add_option( '設定名', '初期値', '', true );

オプションの追加更新(すでに設定名で存在する場合でも更新されます。ない場合は追加されます。)

update_option( '設定名', '値', true );

この2つの関数の最後の true はautoloadという自動読み込みフラグです。省略可能で下記のようにoption追加関数を使用してもかまいません。

省略した場合は自動読み込みフラグはtrueになります

add_option( '設定名', '初期値' );
update_option( '設定名', '初期値' );

option値の読み込み方法はとても簡単です。下記のような関数だけで取得できます。

$setting = get_option( '設定名' );

オプション値の削除も簡単です。

delete_option( '設定名' );

autoloadフラグは何のためにある?

autoloadフラグは何も指定しないとデフォルトでtrueになります。この場合ワードプレスがページを読み込むときに(管理画面もサイトの表示時も)一括でoption値をキャッシュのようなものに読み込みます。

この為、autoloadフラグが指定されたオプション値はget_option時に高速に取得できるようになります

autoloadフラグはfalseにしてもtrueにしてもget_optionで取得しなければいけないことには変わりはありませんので、高速に取得する目的だけで指定する物とお考え下さい。

autoloadフラグで自動読み込みに設定されているオプション値が肥大化してサーバーのメモリ使用量をひっ迫させることがあります

多くのテーマやプラグインでoption値を保存したり取得したりする関数が使われています。そしてほとんどのケースでautoloadフラグはtrueに設定されています。

稀ではあるものの、この自動保存option値が肥大化してサーバーのメモリ使用量を逼迫し、Allowed memory size… exhaustedというメモリエラーを発生させ、サイトが表示不全になることがあります。
この場合当該のプラグインを停止することでメモリエラーが解消されたりします。

しかしautoloadフラグをfalseにするとget_optionの度にデータベースに検索やアクセスが発生する為今度はデータベースに負荷がかかる形になってしまうため、autoloadフラグをfalseにする場合はあまり使われない設定値、もしくは設定値が非常に大きい場合に限るべきかと考えられます

また、プラグインが削除されてもoption値のautoloadがtrueにされている場合、自動読み込みで使われない設定がワードプレスの読み込み時に無駄に読み込まれてしまう可能性があるため、プラグインやテーマの作成の際はプラグインが非有効化される時にdelete_option関数で自身のオプション値を可能な限り削除することが推奨されます。

ご参考になりましたら幸いです。

WordPress ワードプレスの修正やカスタマイズのPHPコーディングのご相談ご依頼はWPドクターまでお気軽にお送りください