2017-06-13 62 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

是的你是對的..這些可能是從這裏前進的最佳選擇。我只是在想,如果有一個快速修復的可能性,然後花更多的時間來妥善解決它。 –

相關問題