问题描述

我正在玩 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。