オートロードとオプションテーブルのパフォーマンス


12

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

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

my_optionオートロードするように設定されたオプションに、異なるテンプレートで複数回(例:一度header.php、一度footer.php)アクセスする必要があるとしたら、どの方法が推奨されますか?

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

回答:


23

自動ロードされた値がどのように使用されるかについての情報はあまり見つかりませんでした。

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

しかし、このオートローディングが発生すると、どのような機能になりますか?すべての自動読み込みオプションは、wp_load_alloptions関数によって読み込まれ、キャッシュされます。is_blog_installed関数は、各HTTP要求の開始時に関数によって呼び出され、WPによって処理されます。

まとめましょう:autoloadedオプションは同じオプションですが、WPによるHTTPリクエスト処理の最初にロードされます。

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

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

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

  1. 最初で最も重要な理由:呼び出すたびに最新の値が返されることを確信できます。
  2. 将来の再利用のためにキャッシュします。
  3. それは他のプラグインとテーマがoption_optionnameフィルターをフックすることによってあなたのオプションをフックすることを可能にします。
  4. まだロードされていない場合は、オプションをフェッチします。

1
+1非常に有益な回答。以前にオプションフックについて聞いたことがない:)
RRikesh 2013年

@rrikeshどういたしまして。十分説明できると思います
Eugene
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.