[WordPress] 開發外掛時初始化(Initial)與進入點(Entry Point)的幾個做法

WordPress 本身沒有太多的框架包袱去要求開發者一定要照著某種設計模式下去開發,最多就遵守「不修改核心」的原則(自己對修改版本負責)。

架構如同瀏覽器的事件驅動設計,一件事發生後主動觸發對應動作的 hook

這造就了「外掛」為主體的一種現象,許多功能都是像外掛被載入,藉此堆疊出更強大的功能。

開發也只要針對事件處理,要簡單可以很簡單(像是主題中的 functions.php,可以說是小外掛*)或是在外掛資料夾下宣告的通用外掛,下面針對本次主題介紹的是外掛資料夾下的全站通用外掛:

從哪裡開始?

外掛一旦安裝進目錄中,就可以在後台外掛中找到他,關鍵就是「啟用」外掛時需要處理的相對應動作。

*註: 主題中的 functions.php 只有在該主題啟用狀態下才有作用

啟用事件

觀察 WordPress 4.7 核心中的 wp-settings.php 檔案(261, 304行),可以發現如果將直述式的 code 寫在檔案中會直接被引用執行,這時候噴的錯(Call to undefined function)大概就是哪個方法還沒被引用完成。

假設開發結果一切正常,要捕捉啟用事件的話就是使用 register_activation_hook 方法,設定初始化。

除了直述式的寫法,還可以使用物件導向(OOP)方式封裝外掛。除此之外,避免多次初始化與不必要的活動發生,大多也會結合 singleton 設計模式。

這樣將全外掛行為都包裝,自成一格的做法,可以使用 plugins_loaded 事件去註冊、執行自己外掛的初始化方法。

用這事件的優點是 Pluggable 方法已被載入,可以使用的功能多一些!

不一定皆是如此

怎麼寫其實不是太大重點,能動與結果正確才是。剩下來才會是管理面的問題,參考其他開源外掛作者的專案,也可以收穫很多!

文末

推薦想寫外掛的夥伴可以參考這個 WordPress-Plugin-Skeleton 外掛開發框架(還未更新 4.7 REST API 的部分)。作者 Ian Dunn 也有在 2013 年西雅圖的 WordCamp 上發表過使用物件導向 OOP 方式開發WordPress與 2014 年在 代頓 WordCamp 發表的如何正確客製化WordPress外掛的方法的演說,都很值得一讀!

Facebook 功能:

Share: