問題描述

我正在玩 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。