问题描述
我正在玩 options
表的 autoload
列。我没有找到关于如何使用自动加载值的很多信息。我尝试了一个 print_r($GLOBALS)
,看到自动加载的选项存储在 $GLOBALS['wp_object_cache']->cache['options']['alloptions']
中。
是否有另一种方式来访问这些变量?
假设我需要在不同的模板中多次使用设置为自动加载的选项 my_option
(例如,在 header.php
中一次,在 footer.php
中一次),建议使用哪种方法?
-
是否可以从
$GLOBALS
数组检索它 (因为值已经在这里) -
我必须使用
get_option('my_option')
一次,然后再次对变量进行全局化 -
每次使用
get_option('my_option')
(我看不到要点) -
还有别的
最佳解决方案
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?
-
直接从
$GLOBALS
检索它是坏的方法,而不是使用get_option
-
全球化的自定义变量是不受欢迎的,并建议尽可能少做
-
从我的角度来看,这是你最好的选择
-
甚至不要想别的东西:)
为什么每次使用 get_option
功能是最好的选择?因为:
-
第一个也是最重要的因为:你可以确信它会返回 up-to-date 的值,每次你调用它。
-
它将缓存它以备将来重用。
-
它允许其他插件和主题通过挂接
option_optionname
过滤器挂钩您的选项。 -
如果尚未加载,它将获取一个选项。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。