問題描述

我目前正在編寫一個帶有自定義帖子和幾個功能的 simple-ish 外掛,使用後置後設資料並將幾個變數新增到資料庫中的”options” 表。在我的研究中,我在 WP Codex 中看到了一些關於使外掛向後相容 WP 3.x 之前的版本的引用,我只是想知道現在加入該相容性有多重要。

例如,我曾經看到的 (由客戶端) 安裝的最舊版本的 WP 是 3.2,或者在那裡的某個地方。我不能想像很多人的年齡大於 3.x,但我可能是錯的。我知道理論上你應該總是試圖讓它完全相容,但實際上,有誰知道包含這個能力有多重要?

謝謝

最佳解決方案

始終為當前版本編寫外掛,並保留即將推出的版本的夜間版本。別的沒關係。

編輯 As @toscho 在評論中指出:

可能有一些解釋為什麼要這樣。

  1. 因為我這樣說

  2. 外掛只需要符合核心,因為如果所有人都遵守規則,沒有任何事情會失敗。如果一個外掛不符合規則,那麼它有一個錯誤。而這個 bug 需要修復,而不是其他任何東西,而不是另一個外掛或主題。

  3. 沒有更新 WordPress 的使用者是使用的 bug 外掛的結果,在沒有大量工作的系統中不能被遺棄。如 (2) 所寫,這是你不必關心的錯誤。錯誤需要修復,而不是您的外掛考慮到第三方程式碼。

  4. Legacy Code 不需要支援。需要更換不是你的問題

  5. 事情在主要 X.X 版本上大幅改變。當您嘗試支援以前的版本時,您通常需要不同的解決方法和許多版本檢查。那就是 (a) 維護噩夢 (b) 增加程式碼庫 (c) 使得單元測試不可能在一個版本上執行 – 而不是更少,而不是更多,最後 (d) 減少伺服器磁碟空間和效能在大多數情況下) 。

  6. 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。