問題描述

我正在玩 options 表的 autoload 列。我沒有找到關於如何使用自動加載值的很多信息。我嘗試了一個 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. 還有別的

最佳解決方案

I didn’t find much information about how the autoloaded values are used.

自動加載選項沒有特殊情況,它們的使用方式與常規選項相同,但是可以弄清楚 options 表的 autoload 列是什麼意思。這個列決定了我們需要在請求的初始化階段獲取一個選項,還是隻需要按需提取一個選項。

但是當這個自動加載發生時,它有什麼功能呢?所有自動加載選項由 wp_load_alloptions 功能加載和緩存,由 is_blog_installed 功能在每個 HTTP 請求的開頭調用,由 WP 處理。

總結一下:自動加載選項是相同的選項,但是在 WP 請求處理開始時加載。

Suppose I need to access an option … which method is recommended?

  1. 直接從 $GLOBALS 檢索它是壞的方法,而不是使用 get_option

  2. 全球化的自定義變量是不受歡迎的,並建議儘可能少做

  3. 從我的角度來看,這是你最好的選擇

  4. 甚至不要想別的東西:)

為什麼每次使用 get_option 功能是最好的選擇?因為:

  1. 第一個也是最重要的因為:你可以確信它會返回 up-to-date 的值,每次你調用它。

  2. 它將緩存它以備將來重用。

  3. 它允許其他插件和主題通過掛接 option_optionname 過濾器掛鈎您的選項。

  4. 如果尚未加載,它將獲取一個選項。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。