問題描述
我目前正在編寫一個帶有自定義帖子和幾個功能的 simple-ish 插件,使用後置元數據並將幾個變量添加到數據庫中的”options” 表。在我的研究中,我在 WP Codex 中看到了一些關於使插件向後兼容 WP 3.x 之前的版本的引用,我只是想知道現在加入該兼容性有多重要。
例如,我曾經看到的 (由客户端) 安裝的最舊版本的 WP 是 3.2,或者在那裏的某個地方。我不能想像很多人的年齡大於 3.x,但我可能是錯的。我知道理論上你應該總是試圖讓它完全兼容,但實際上,有誰知道包含這個能力有多重要?
謝謝
最佳解決方案
始終為當前版本編寫插件,並保留即將推出的版本的夜間版本。別的沒關係。
編輯 As @toscho 在評論中指出:
可能有一些解釋為什麼要這樣。
-
因為我這樣説
-
插件只需要符合核心,因為如果所有人都遵守規則,沒有任何事情會失敗。如果一個插件不符合規則,那麼它有一個錯誤。而這個 bug 需要修復,而不是其他任何東西,而不是另一個插件或主題。
-
沒有更新 WordPress 的用户是使用的 bug 插件的結果,在沒有大量工作的系統中不能被遺棄。如 (2) 所寫,這是你不必關心的錯誤。錯誤需要修復,而不是您的插件考慮到第三方代碼。
-
Legacy Code 不需要支持。需要更換不是你的問題
-
事情在主要 X.X 版本上大幅改變。當您嘗試支持以前的版本時,您通常需要不同的解決方法和許多版本檢查。那就是 (a) 維護噩夢 (b) 增加代碼庫 (c) 使得單元測試不可能在一個版本上運行 – 而不是更少,而不是更多,最後 (d) 減少服務器磁盤空間和性能在大多數情況下) 。
-
WordPress 已經有一個非常舊的代碼庫,在很多邊和角落都缺少改進。簡而言之:WordPress 是舊的,使用不再受支持的 PHP 版本作為最低限度,因此您已經支持以前的版本低於應用程序的公共 API 。
現在去問問自己:
When you’re already supporting an no longer supported PHP version, why would you want to support an application that isn’t even supported by its creators?
次佳解決方案
記住發佈 WordPress 3.0 所需的 PHP5 。當時很多託管公司還沒有在他們的服務器上運行 PHP5 。所以有一段時間,一些 WordPress 網站可能不更新到 WordPress 3.0,因為他們的託管公司沒有保持他們的服務器是最新的。
自從 WordPress 3.0 發行以來,已經有很多年了 (3+),因此向後兼容 WordPress< 3.x 不是很常見的插件。
第三種解決方案
大多數 WordPress 安裝 are outdated 。目前,所有安裝中只有 5.2%在最新版本 3.6 上運行。 27.3%仍在版本 3.0 。
您可能認為您必須使用兼容的代碼來支持這些舊版本。但想想這個含義:
-
您必須測試所有正式支持的版本。
-
您必須處理不兼容的 API,例如媒體上傳器,其在 3.5 中發生了巨大變化。
-
你讓你的用户認為升級 WordPress 是沒問題的,因為它仍然可以工作。
-
你需要更多的代碼,更多的測試和更多的時間來支持做同樣的事情。
而且這些用户可能甚至不會安裝您的插件,因為他們知道已經有新插件破壞了他們的網站。在市場覆蓋面方面,您可能會用向後兼容的代碼贏得一點點。在你失去的效率方面。
第四種方案
我寫的插件的經驗法則是支持當前版本減 1,所以我寫的所有插件都將與 3.6.x 和 3.5.x 兼容。雖然特定的插件可能適用於早期版本,但如果遇到問題,我不保證它也不支持它。
第五種方案
四個月前,我接手維護一個流行的插件。在開始工作之前,該插件在 2 年內沒有更新。我做了一堆錯誤修復,發佈了新版本,2 天后,從一個傢伙説,新版本導致他的網站上的 white-screen-of 死亡。在我查看之後,他仍然運行 WordPress 2.9.2,而我的更新使用了 3.0 中引入的 home_url 功能。我不知道為什麼這個人決定立即更新這個插件,儘管他在 3 年內沒有更新他的 WordPress 安裝。當我製作新版本時,我從來沒有想過要測試 WordPress 2.9.2 。
這是道德的故事:在你的插件的 readme.txt 文件中,在標題中有一個 「至少需要」 版本號。用它。當您進行更新時,如果您不想測試舊版本,請增加它。這將阻止用户拒絕更新他們的 WordPress 安裝更新您的插件。
我正在編寫一個新的相關的插件,而我正在計劃使它成為 WordPress 3.6,因為我想使用包含在核心中的 getid3 庫。我不希望為舊的核心版本發佈一個新的插件。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。