問題描述
我一直在為 WordPress 開發外掛,我開發的大多數外掛都使用兩到三個類,因此不如 Buddypress 或 WooCommerce 那麼大。
我計劃開發兩個開源外掛來提供某種複雜的系統 (目前不能在開發過程中分享細節,而在開發過程中其他開發人員可以自定義功能),而且系統需要與 Buddypress 和 WooCommerce 。
當我檢查這些外掛檔案,並意識到他們已經註冊了自己的操作和過濾器,開發人員可以根據需要進行修改。但是,我的問題是無法完全理解,我應該如何編寫一個外掛,其他人可以靈活地覆蓋函式以及新增自己的外掛。
我知道很難給出明確的答案,但我需要一些 start-up 指南,所以我可以走正確的方向。我需要註冊自己的操作和過濾器嗎?如果是的話?如果不是,我的選擇是什麼?
你的建議會幫助我很多… 謝謝
最佳解決方案
您在外掛或主題中提供的 API 取決於該特定程式碼的邏輯。可能沒有適用於所有情況的指南。
我是使用 API的多個外掛的貢獻者,到目前為止我學到了什麼:
-
在您真正瞭解使用者如何使用您的程式碼之前,不要提供 API 。釋出前兩個或三個版本沒有任何 API 。沒有自定義操作或過濾器,沒有公共方法或函式 (從來沒有任何全域性變數) 。等待使用者的請求,但不要新增程式碼,直到您知道內部程式碼結構將在長期執行為止。 Maintaining backwards compatibility of an API is hard 。這可能會阻止其他地方的改進。想想 WordPress 今天不能刪除的所有全域性變數。這是一個糟糕的 API,我們被困了很多年,因為人們 use it already 。
-
考慮將您的 API 與其他程式碼分開 (見上一個連結) 。您的 API 不僅對第三方開發人員有用,而且對您也是有用的。不要為自己新增限制,如果你不必。
-
吃你自己的狗食。如果您提供自定義掛鉤,請在程式碼中使用它們。這將為其他開發者提供有用的示例,您可以很快看到可能的缺陷。如果 WordPress 核心在內部使用 so-called Settings API,那麼今天我們就不會有這個混亂。也許。
-
以身作則。在外掛中使用 WordPress 核心 API 的很好的部分。避免使用 anonymous objects,常量,全域性變數和任何型別的不可預測的程式碼。
-
確保您使用一致的命名方案 (而不是 such a mess),並將所有內容放在您自己的名稱空間下。
-
先寫檔案。稍後再釋出一個新的 (部分)API 。為所有內容建立有用的示例。你會驚奇地看到你會發現多少孔和冗餘。
-
避免回撥地獄。提供特定的工具來除錯您的 API,因為它們應該不起作用 (包括沒有精簡的指令碼和樣式表) 。我已經寫了一個如何 debug AJAX 的例子,只是為了說明你可以在這裡有多麼有創意。在釋放這些工具之前,請先在檔案中解釋這些工具。
-
WordPress 的回撥悖論的另一種可能是 Observer pattern 。這將為 third-party 開發人員提供障礙,但可能導致雙方更好的程式碼。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。