我处于一个奇怪的情况,在一个大型WordPress环境下工作,其中有很多由不同供应商开发的插件。 有一个插件,它是通过运行该行当wordpress插件退出时运行一些代码
$default_timezone = "Australia/Darwin";
date_default_timezone_set($default_timezone);
我知道,这是错误的,插件应该使用改变了整个网站的默认时区
get_option('timezone_string');
然后插件的使用几个地方
$now = new Datetime()
以获得时间。所以对于这个特定的插件,一切正常,但是它将缺省时间设置为Darwin,对于其他插件,current_time()函数出错。
既然这个插件是巨大的,它现在成为一个问题来改变它。有没有一种方式,以便当这个插件的代码执行时,我可以撤消它正在做的默认时区设置?
我希望我让自己清楚!
如果您能更详细地描述情况,这将会很有帮助。例如,这是第三方插件还是您自己的插件。如果它是你自己的,你应该修改你的代码并使用get_option()。这个插件到底做了什么?它是否将任何数据保存到数据库并放下时间戳?我认为这里的解决方案不会像你所建议的那样,这是由于多种原因以某种方式撤销脚本执行后的时间设置更改。所以你应该用更多的上下文描述你的情况,然后提出可能的解决方案。 – TurtleTread
它是一家大型企业的网站。我们确实可以访问代码。不同的供应商不时制造不同的插件。 该插件处理一些对业务非常重要的后台功能。 –
我认为你应该改变代码,特别是如果它只是在几个设置时区的地方。如果简单地改变加载顺序,您可以将插件放在mu-plugins文件夹中,以便首先加载,然后在其后添加一个新插件并更改时区设置。 – TurtleTread