すべてのオプション変数はデータベースから取得され、リクエストごとにキャッシュにロードされますか?
はい、そうです。 get_option
呼び出しが行われると、WordPressはwp_load_alloptions
という名前の関数を実行します。これは、すべての自動ロードオプションのキャッシュコピーを取得するか、それらのオプションをすべてキャッシュにロードします。それからwp_load_alloptions
はすべての自動ロードオプションの配列を返します。オプションがオートロードされている場合( add_option
関数を使用するときに指定される)、それはこの配列の一部となり返されます。
あなたのオプションが自動ロードされていない場合、WordPressはキャッシュ内でそのオプションを探し、存在する場合は値を返します。それが失敗した場合、最後のフォールバックはデータベースに行き、値を取得し、それをキャッシュに設定してからそれを返すことです。
最後に、オプションがまったく見つからない場合(たとえば、オプション名が無効だった場合)、WordPressはそのオプションの名前をnotoptions
というキャッシュされた配列に格納します。後続の非オプションの呼び出しが行われた場合、WPが最初にnotoptions配列をチェックするので、そこにないものをチェックするための時間を無駄にすることはありません。
ページロードごとにget_option
を複数回呼び出すことが心配な場合は、しないでください。 WordPressは、最初のget_option
呼び出しの後に、その自動ロードの有無にかかわらず、オプション値をキャッシュします。
何が起こっているのかを見るために get_option
のソースをチェックしてください。
いいえ、
autoloadをtrueに設定して特別に読み込まれたオプションのみ
http://codex.wordpress.org/Function_Reference/add_option を参照してください。
そのため、すべてのページで必要なオプションである場合は、データベースに追加するときにautoload = trueを設定してください。
その後は普通にget_optionを使ってください - wpはキャッシュなどを処理します。
はい、
自動ロードをyes/trueに設定する必要はありません。デフォルトではyesに設定されています: http://codex.wordpress.org/Function_Reference/add_option - 最後の関数パラメータ($ autoload):
このオプションは、wp_load_alloptions()関数によって自動的にロードされるべきですか(ページがロードされるたびにオプションをオブジェクトキャッシュに入れます)。有効な値は、yesまたはnoです。デフォルト:yes
ただし、noに設定した場合、オプションはキャッシュに入れられません。