web-dev-qa-db-ja.com

自動ロードとオプション表を使用したパフォーマンス

私はautoloadテーブルのoptionsカラムで遊んでいます。オートロードされた値がどのように使用されているかについて、私はあまり情報を見つけませんでした。私はprint_r($GLOBALS)を試しました、そして、オートロードされたオプションが$GLOBALS['wp_object_cache']->cache['options']['alloptions']に格納されるのを見ました。

これらの変数にアクセスする別の方法はありますか?

自動ロードに設定されたオプションmy_optionに異なるテンプレートで複数回アクセスする必要があるとします(例:header.phpに1回、footer.phpに1回など)、どの方法をお勧めしますか?

  1. $GLOBALS配列から取得しても大丈夫ですか(値は既に存在するため)
  2. get_option('my_option')を一度使用し、変数をグローバル化する必要があります 再び
  3. 毎回get_option('my_option')を使用します(これで私はやることがわかりません)。
  4. 他に何か
9
RRikesh

オートロードされた値がどのように使用されているかについて、私はあまり情報を見つけられませんでした。

オートロードされたオプションには特別な場合はありません。それらは他の通常のオプションと同じように使用されますが、autoloadテーブルのoptions列が何を意味するのかを理解させます。この列は、リクエストの初期化段階でオプションを取得する必要があるかどうか、またはオンデマンドでのみオプションを取得する必要があるかどうかを決定します。

しかし、このオートロードが行われたとき、それはどのような機能を果たしますか?すべての autoload オプションは、wp_load_alloptions関数によってロードおよびキャッシュされます。これは、各HTTP要求の開始時にis_blog_installed関数によって呼び出され、WPによって処理されます。

要約すると、自動ロードオプションも同じオプションですが、WPによるHTTP要求処理の最初にロードされます。

オプションにアクセスする必要があるとします。どの方法が推奨されますか?

  1. 直接$GLOBALSから取得するのは悪い方法です。代わりにget_optionを使用してください。
  2. カスタム変数をグローバル化することは歓迎されていませんし、できるだけ少なくすることをお勧めします
  3. 私の観点からすると、それはあなたにとって最良の選択肢です。
  4. 他の何かについて考えてはいけません:)

毎回get_option関数を使用するのが最善の選択なのはなぜですか?なぜなら

  1. 最初の、そして最も重要なのため、あなたはそれを呼び出すたびに、あなたはそれが最新の値を返すと確信することができます。
  2. それは将来の再利用のためにそれをキャッシュするでしょう。
  3. それは他のプラグインとテーマがoption_optionname filterをフックすることによってあなたのオプションをフックすることを可能にします。
  4. まだ読み込まれていない場合はオプションを取得します。
18
Eugene Manuilov