2017-06-13 59 views
0

我处于一个奇怪的情况,在一个大型WordPress环境下工作,其中有很多由不同供应商开发的插件。 有一个插件,它是通过运行该行当wordpress插件退出时运行一些代码

$default_timezone = "Australia/Darwin"; 
date_default_timezone_set($default_timezone); 

我知道,这是错误的,插件应该使用改变了整个网站的默认时区

get_option('timezone_string'); 

然后插件的使用几个地方

$now = new Datetime() 

以获得时间。所以对于这个特定的插件,一切正常,但是它将缺省时间设置为Darwin,对于其他插件,current_time()函数出错。

既然这个插件是巨大的,它现在成为一个问题来改变它。有没有一种方式,以便当这个插件的代码执行时,我可以撤消它正在做的默认时区设置?

我希望我让自己清楚!

+0

如果您能更详细地描述情况,这将会很有帮助。例如,这是第三方插件还是您自己的插件。如果它是你自己的,你应该修改你的代码并使用get_option()。这个插件到底做了什么?它是否将任何数据保存到数据库并放下时间戳?我认为这里的解决方案不会像你所建议的那样,这是由于多种原因以某种方式撤销脚本执行后的时间设置更改。所以你应该用更多的上下文描述你的情况,然后提出可能的解决方案。 – TurtleTread

+0

它是一家大型企业的网站。我们确实可以访问代码。不同的供应商不时制造不同的插件。 该插件处理一些对业务非常重要的后台功能。 –

+1

我认为你应该改变代码,特别是如果它只是在几个设置时区的地方。如果简单地改变加载顺序,您可以将插件放在mu-plugins文件夹中,以便首先加载,然后在其后添加一个新插件并更改时区设置。 – TurtleTread

回答

1

这里有几个选项:

  1. 如果日期代码是一个类中,你可以扩展它。恢复您的自定义析构函数中的时区更改。使用你的班级而不是插件中的那个。
  2. 自己修复插件代码。当然,这会增加未来的维护。
  3. 将问题报告给插件开发人员。
  4. 在所有其他插件中明确指定时区,而不是依赖默认值。

对不起,似乎没有任何好的选择。

+0

是的你是对的..这些可能是从这里前进的最佳选择。我只是在想,如果有一个快速修复的可能性,然后花更多的时间来妥善解决它。 –

相关问题