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