是否可以在没有挂钩的情况下调用Get_Option?

时间:2020-04-08 作者:Guido Walter Pettinari

许多插件调用get_option() 在主插件文件中获取它们的设置,而不使用任何操作挂钩。Is this the way it is meant to be used?

我这么问是因为我觉得get_option() 直接有两个缺点:

  1. Extensibility: 这使得开发人员很难(如果不是不可能的话)使用option_{$option} 滤器解决方法是使用必须使用的插件,但这并不总是一个选项
  2. Performance: 如果不需要这些选项,也会在每次页面加载时提取这些选项(即使选项缓存的存在会减轻这种情况)

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

所有选项都是在pageload中加载的,因为它们不仅包括插件/主题选项,还包括WP原生内容,如菜单和小部件。根据是否需要来区分要(不)加载哪些需要进行相当多的计算,因此您提到的性能问题不存在。

现在谈谈可扩展性。让我们看看WordPress action sequence. 你看到的第一个钩子是plugins_loaded. 任何合适的插件只会在稍后使用init 钩因此,为了扩展性,您可以plugins_loaded 在调用之前确保过滤器已就位get_option.

在插件在加载时开始执行的罕见情况下,您需要先加载扩展插件。正如你所说,你可以写must use plugin 为了这个。或者,您可以编辑选项表,以确保您的插件是队列中的第一个(是的,插件列表也是一个选项)。

最后,请回答您的问题:这是否可取?事实上get_option 功能当然表明了这一点。然而,如果您是一名插件开发人员,您是否希望其他人在用户不注意的情况下干扰您的选项?我想说的是,如果插件开发人员明确没有使用挂接插件选项的最佳实践,也许他只是不想让任何人弄乱这些选项,你应该尊重这一点。

相关推荐

Can I make plugins required?

我正在开发自己的Wordpress主题,将用于多个客户端。它有一个主题选项页面,这样我每次都可以轻松自定义网站,但我也会在我制作的每个网站上使用一些插件(如SEO插件、安全性等)。有没有办法让它们成为“必需的”,这样我就可以得到这些插件的列表,这样当我在新网站上安装主题时就不必在插件目录中找到它们了?