Продуктивність із автоматичним завантаженням та таблицею параметрів


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.

Давайте підсумовуємо: опція автоматичного завантаження - це та сама опція, але завантажена на початку обробки HTTP-запиту WP.

Припустимо, мені потрібно отримати доступ до опції ... який метод рекомендується?

  1. Це поганий підхід, щоб отримати його $GLOBALSбезпосередньо, використовувати get_optionзамість цього
  2. Глобалізувати власні змінні не вітається, і рекомендується робити це якомога менше
  3. З моєї точки зору, це найкращий варіант для вас
  4. Навіть не думай про щось інше :)

Навіщо використовувати get_optionфункцію кожен раз, коли це найкращий варіант? Тому що:

  1. Перше і найважливіше тому, що : ви можете бути впевнені, що воно повертатиме актуальне значення кожного разу, коли ви його будете викликати.
  2. Це буде кешувати його для подальшого використання.
  3. Це дозволяє іншим плагінам і темам підключити ваш варіант, підключивши option_optionnameфільтр.
  4. Він отримає опцію, якщо вона ще не завантажена.

1
+1 дуже інформативна відповідь. Ніколи не чув про гачок варіанту раніше :)
RRikesh

@ rrikesh ур вітаю, сподіваюсь, це пояснює досить добре
Євген Мануїлов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.