Wydajność z autoloadem i tabelą opcji

12

Bawię się autoloadkolumną optionsstołu. Nie znalazłem wielu informacji o tym, jak używane są automatycznie ładowane wartości. Próbowałem print_r($GLOBALS)i zobaczyłem, że opcje automatycznego ładowania są zapisane w $GLOBALS['wp_object_cache']->cache['options']['alloptions'].

Czy istnieje inny sposób dostępu do tych zmiennych?

Załóżmy, że muszę uzyskać dostęp do opcji my_option, która została ustawiona na automatyczne ładowanie, wiele razy w różnych szablonach (np. Raz w header.php, raz w footer.php), która metoda jest zalecana?

  1. Czy mogę pobrać go z $GLOBALStablicy (ponieważ wartość już tu jest)
  2. Czy muszę użyć get_option('my_option')raz i ponownie zglobalizować zmienną
  3. Używaj za get_option('my_option')każdym razem (czego nie widzę sensu)
  4. Coś innego
RRikesh
źródło

Odpowiedzi:

23

Nie znalazłem wielu informacji o tym, jak używane są automatycznie ładowane wartości.

Nie ma specjalnego przypadku dla opcji automatycznego ładowania, są one używane w taki sam sposób, jak inne zwykłe opcje, ale pozwala dowiedzieć się, co oznacza autoloadkolumna optionstabeli. Ta kolumna określa, czy musimy pobrać opcję na etapie inicjowania żądania, czy też powinniśmy pobrać opcję tylko na żądanie.

Ale kiedy nastąpi automatyczne ładowanie i jaką funkcję to robi? Wszystkie opcje automatycznego ładowania są ładowane i buforowane według wp_load_alloptionsfunkcji, która jest wywoływana przez is_blog_installedfunkcję na początku każdego żądania HTTP, obsługiwanego przez WP.

Podsumujmy: opcja automatycznego ładowania jest tą samą opcją, ale ładowana na początku przetwarzania żądania HTTP przez WP.

Załóżmy, że muszę uzyskać dostęp do opcji ... która metoda jest zalecana?

  1. Jest to złe podejście do $GLOBALSbezpośredniego pobierania , użyj get_optionzamiast tego
  2. Globalizacja zmiennych niestandardowych nie jest mile widziana i zaleca się, aby robić to w jak najmniejszym stopniu
  3. Z mojego punktu widzenia jest to najlepsza opcja dla Ciebie
  4. Nawet nie myśl o czymś innym :)

Dlaczego korzystanie z get_optionfunkcji za każdym razem jest najlepszą opcją? Ponieważ:

  1. Pierwszy i najważniejszy, ponieważ : możesz być pewien, że zwróci aktualną wartość za każdym razem, gdy ją wywołasz.
  2. Będzie buforować go do ponownego użycia w przyszłości.
  3. Pozwala innej wtyczce i motywowi zaczepić twoją opcję poprzez zaczepienie option_optionnamefiltra.
  4. Pobiera opcję, jeśli nie jest jeszcze załadowana.
Eugene Manuilov
źródło
1
+1 bardzo pouczająca odpowiedź. Nigdy wcześniej nie słyszałem o haku opcji :)
RRikesh 30.01.2013
@rrikesh ur welcome, mam nadzieję, że to wyjaśnia wystarczająco dobrze
Eugene Manuilov 30.01.2013