在我們開發之後,我們的外掛維護何去何從?官方有一份明確的指南來確定,你是該如何如何撰寫來維護你的外掛,而我挑幾項特別重要的出來講講,在開發後期不會讓人那麼迷惑,而這一些鐵則雖然不是一定,但是如果你是生手來撰寫的話,相信會很有幫助,而在這個時間點,我也想說其實php的新手很適合寫wordpress外掛,你可能建立了一個凌亂不堪的外掛來當你的初登場,但是這個的好處就在於你容易看到你實作的結果,比起寫很多pm2每天看著cpu使用率與reboot的次數,多沒有成就感QQ看看真島建設多棒!
你的外掛很有可能會在網站上,有非常多人下載來使用,而他們可能會有各種不同的情況,包括版本或是環境資料等等其餘的因素,而我們能做到的事情,就是把每個預想到的狀況加入我們的測試條件之中,以防遇見更多的問題。
你是不是在公司或者是線上的開源軟體上,看到那些凌亂甚至缺東丟西的文件,千萬別這樣,我們在開發的第一步,就是先把你的header上的介紹與readme.txt給寫的齊全,包括外掛的功能與支援的軟體規格,而在開發文件上,每個public hook都請寫好,與誰做依賴等等的,沒有做好分離就好好標注,寫好開發文件也好讓過測資判斷覆蓋率的高低是否出了問題。
我們先前有說過,版本控制的重要性,官網是推薦使用SVN,但我是推薦使用git來做,在先前的幾章有講到過,你的branch必須有develop,release,hot-fixed與supported,我來講述每一個branch對於一個上線的外掛是有什麼幫助。
主要做開發的主支線,在你的團隊,每個人要推進develop都需要經過team lead的code review與核准,這樣建立才是有意義的,不然發100%的pr,不如九兩個分支就夠了,省得再開其他分支佔硬碟空間是吧
正式機上的版本,通常也會有人稱之為production,而這一個支線更新會是最慢的,並且會是由develop的支線來merge的,通常這個merge會只有team lead或是devops來做這一項工作。
這是所謂的救火專線,這一項是唯一凌駕於release之上的branch,而他主要就是在修release版本有大問題的支線,而在修復的當下,會在merge到develop去做更完善的修復,還有看hot-fixed多少次工程師就要被電多少次。
這個主要是要寫支援較舊版本的功能,如同你的使用者仍然使用classic editor,而現在預設已經是gutenburg了,那你總得需要做給不升級的人們,因為我們沒辦法說你耍屌不升級,我就不屌你,而最常遇到,就是那些拿著已經有些年份手機的人,當他開網頁是webview的話,那麼他們就會產生十萬個為什麼你的東西不能動
我相信開源專案可以讓你的外掛更有競爭力,你的所有的使用者會再跟你講你需要多哪一些功能功能blablabla,而不少人會在自己的issue上架在bot來自動回覆一些murmur的問題,而你也可以藉由bot的幫助更精準地找到真的是有需要幫助的issue,而不是那些單純只是想抱怨說為什麼你的外掛裝上去我的網站icon會變成紅色的問題。
然後,因為是開源,你會收到一些讚美,但你肯定會收到不少惡毒的批評,或是聽起來很怪異的feature,而你需要做到的事情是逐一消化他們的意見,相信我這比嘴上說說得還難十倍,還記得你跟你的同事說,欸為什麼你這邊不用async做而是要弄成promise,常常會有一句,幹不爽你來做的這個經典回答,對我常常心底會有這句話產生,不過我還是會(得)耐著性子跟他們解釋討論,有時候心底覺得不舒服的時候,那才是你最該做的一件正確事情。
版本的流動很快,你可以不用常常去寫新的功能,但是你需要常常維護,寫心得測試條件,或是重構部分的程式碼來做定期更新,而最重要的是,把使用者的問題解決完,也快點設定新的版本號上去讓大家更新這些問題,但也不要動不動兩三天就是一次小更新,每個月大更新,這樣會讓開發者很頭痛該如何去擴充你的外掛。
這些上述的重點,都是得要持續的,不是做一次就有用的維護,而如果你覺得你自己寫的程式架構很亂,你不妨使用MVC的開發模式,將模板裝進view,控制view放進controller,而在操作其他資料的部分,則是可以做成factory放回model來操作,這對於想接觸設計模式的人是有很好的基礎幫助,可以這一篇對於MVC很好的介紹,傳送門。
這次鐵人賽有大佬寫的教學文,就不再詳述,直接給傳送門去。
這次鐵人賽有很多艾瑞克,所以有一位其中之一的艾瑞克也是寫了發行掛的方式,我也是提供傳送門讓人參考。
剩下的這幾天,我主要都會是圍繞在wooCommerce上,打造一些可能在工作的實際情況與接案時遇到的功能,將他簡化後做成的外掛,這些製作的目的不是要取代,而是讓各位有對於這些所謂的extension是該如何被開發,以及在查文件的思路是該如何製作
第一項會製作Woocommerce Nested Category Layout
的展示,讓在母目錄與子目錄有更好的顯示畫面,也比較合理些,在觀看的同時會讓畫面更有組織性,全靠著子項目也是有被排序並且分別的排列。
在我們使用一般的從subscriber到adminstrator這些基本款,我們還需要有更多的role供我們使用,而我們更可以撰寫更多的功能,將使用者可以儲存不只一個的role,並且在role上加上了優先權的概念,讓一些優先權較高的role能夠在一些規則之中,不會出錯。
我們在woocommerce之中可以看見,在操作訂單,是可以自行操作訂單的內容,甚至是創立一個訂單給特定的客人,而我們將要把這一套寫進我們的前端顯示,在結帳的部分,管理員可以選擇使用自己的帳號,或是指定給其他的客人來進行結帳。
剩下的七天,給自己一個超級挑戰賽,幾乎是每兩得要做好一個外掛上,並且幹完心得,我只希望這個不要是抱著炸彈的空話,讓自己的肝燃燒吧!!!
Planning, Submitting, and Maintaining Plugins