如何開發 WooCommerce 日誌紀錄外掛


每次遇到想要跟我學習 WordPress 外掛開發的朋友來信,總是只能丟些教學文件給他們,畢竟我也不知道他們想做什麼東西,只能提供官方文件給他們參考,雖然這幾年來也寫了不少,但好像都缺少比較完整的開發教學。

想到之前為了教老婆開發而整理出的一套課程大綱,似乎有這個契機可以把它發展下去,但如果只是講理論而沒應用好像無法立即派上用場,於是想到可以整合之前寫過的小工具作為內容,就可以設計出真的能做出東西的教材。

剛好上週為了除錯的事情順手寫了一支日誌外掛,整合理論與實務的教學計畫如下:

--

前言

日誌紀錄是開發者與網站維護人員最重要的好夥伴,除了可以在開發當下輸出執行結果來確認程式的邏輯外,當網站發生錯誤時也能從紀錄中去檢查問題所在原因。查看 WooCommerce 的日誌紀錄步驟為:進入後台側選單 > 點選 WooCommerce > 狀態 > 日誌紀錄 > 選擇日誌檔 > 查看,就會顯示相關的資訊。

一、WooCommerce 內建日誌紀錄的問題

WooComerce 內建的日誌有以下幾個痛點:

  1. 選單的目錄層級過多,日誌檔太多時東西不好找
  2. 要更新日誌內容必須點選查看,直接重新整理頁面會回到預設的日誌檔
  3. 日誌紀錄的時間是由舊到新,如果單一檔案內容太多必須要捲很長的頁面才能看到最新一筆紀錄
  4. 日誌紀錄的時間非本地時間,查看時腦海中必須自行轉換
  5. 紀錄種類標示不清,難以一眼區分該紀錄是重大錯誤還是單純的訊息通知

二、WooCommerce 日誌紀錄外掛開發目標

為了解決以上問題,本篇教學將會介紹如何開發一支 WooCommerce 專用的外掛,本外掛預期會達到的效果如下:

  1. 可以在後台 WooCommerce 選單下點擊日誌紀錄選單後直接進行查看,節省多次點擊的步驟
  2. 可以設定要查看的日誌檔名稱,設定完成後僅會顯示該日誌檔的紀錄,以減少翻查時間
  3. 日誌使用表格條列式呈現,並以日誌檔名稱、日期、本地時間做分類,排序方式由新到舊
  4. 日誌表格突顯紀錄類型,讓使用者可以很容易的區分需要注意的紀錄
  5. 開發完成後導入 Github Action 打包 zip 檔供使用者第一次下載安裝
  6. 開發完成後導入自主託管更新機制,讓使用者不需另行下載安裝 zip 檔便能在後台自動更新

三、適合對象

  1. 正在學習 PHP 的新手
  2. 想要了解 WordPress 開發基礎知識的 PHP 工程師
  3. 想要開發 WordPress 外掛的創業者
  4. 想設計 WordPress 課程的老師
  5. 想撰寫 WordPress 書籍的作者

四、課程大綱

1. 認識 WordPress 外掛開發基礎知識

  • 介紹 WordPress 運作的組成:Nginx、MySQL、PHP
  • 介紹開發環境的專有名詞:本機、測試主機、正式主機
  • 使用 Local WP,介面操作教學
  • 介紹 WordPress 是由哪些檔案所構成
  • 介紹外掛的基礎組成:主程式、標頭宣告
  • 介紹 PHP 變數、函式、輸出
  • 介紹 WordPress 勾點、常用 API、資料表
  • 介紹 FTP、打包上傳
  • 介紹 Git、Github、開發流程、分支
  • 安裝 WordPress Coding standard、自動格式化
  • 介紹外掛檔案拆分邏輯,使用 Autoload、Packagist
  • PHP 物件導向基礎知識

2. WooCommerce 日誌紀錄外掛後端開發流程

  • 讀取 WooCommerce 日誌紀錄檔
  • 解析日誌內容,組合日誌紀錄陣列
  • 註冊 REST API Endpoint 提供第三方讀取紀錄

3. WooCommerce 日誌紀錄外掛前端開發流程

  • 註冊後台選單
  • 使用 Master CSS 設計版面
  • 使用 PHP 輸出頁面內容

4.外掛發布與更新維護

  • 整合 Github Actions 發行安裝檔
  • 版本控管分支策略
  • 整合自主託管外掛更新機制

-

不知道這樣的教學內容對你會有所幫助嗎?有的話回信跟我說,讓我知道可以繼續發展下去~

WordPress 開發日常

Read more from WordPress 開發日常

在先前的文章中提到我有用一套 AI 機器人服務 Chatbase,這陣子終於把它整合到 LINE 官方帳號裡面,用起來感覺還不錯,我還額外開發了一支 WordPress 外掛來整合 Chatbase API,並且設計了一些機制來符合自己的業務邏輯,文末附上外掛下載連結與使用說明。 網頁好讀版:https://oberonlai.blog/wordpress-line-ai-bot/ Chatbase 簡介 Chatbase 是一套整合 OpenAI API 的客服機器人,能夠在自己的網頁上提供對話視窗,讓潛在客戶直接透過該視窗進行詢問,對網站經營者來說可以解決他們自行開發對話介面以及 API 串接的成本,能直將使用機器人客服在第一時間解決客戶的問題。 雖然身為開發者有能力自行開發,但讓我最頭痛的是訓練的部分很麻煩,要先整理訓練資料並轉成 JSON 格式,然後還需要上傳跟測試微調後的模型,再加上訓練的時間也需要計費,目前我的網站上雖然只有兩百篇文章,但光是想到要整理就覺得累人。 因此評估下來我決定還是讓 Chatbase...

從接案到賣產品的轉變之路 我不是去賣水果XD,上圖是答應自己成交第一筆單之後獲得的獎勵:麝香葡萄 自從接案之路比較穩定之後,我開始嘗試把之前做過的功能整理出來,變成商業外掛販售給更多客戶。原本以為這樣的作法跟服務固定客戶沒什麼差別,除了客戶數量變多一些,又能突破收入天花板,但實際賣了兩年多之後,只能說現實很骨感XD 我販售的外掛主要是做 WooCommerce 的訂單通知,讓顧客在下單之後可以在 LINE 裡面收到訂單資訊,也可以用手機簡訊來通知,然後通知的內文可以帶入訂單的參數,讓傳出去的訊息是客製化的內容。 由於 LINE 在台灣的市占率高達 97%,基本上有在做電商的都會開 LINE 官方帳號,因此訂單通知的需求理論上應該不會少,為了測試市場規模,我先寫了ㄧ篇文章看看有沒有人要,結果還真的收到不少來信詢問,於是便開始著手進行開發。 然後開發到一半的時候發生檔案誤刪的悲劇,為了爭一口氣咬著牙全部重寫,花費了幾個月的時間終於完成了第一版,完成後開始發信給之前有來詢問的人,算一算如果來問的全都買單,該年應該就可以提早退休了XD 最後第一批寄送名單成交率大概不到...

好久不見,最近過得好嗎? 你可能有發現到 WordPress 開發日常許久未更新了,大概是從去年十月開始停更,會停更的主要原因滿多的,像是 ChatGPT 的崛起、工作的安排、職涯發展的規劃等等,但總歸一句就是懶了XD 之前因為每週五都一定要產出文章來,礙於截稿時間讓我覺得自己寫的東西為了要快速產出因此過於淺薄,而現在這些淺薄的知識全部都能透過 AI 得到,於是開始懷疑自我寫作的價值,在停更期間我也慢慢把電子報拋諸腦後,雖然工作還是會做筆記,但就沒動力整理出來。 直到上半年在回顧工作時,發現到累積了不少東西,再加上前陣子感冒,新冠的腦霧後遺症又再次發作,為了活化自己的大腦,決定還是開始寫些東西來刺激大腦,透過寫作來自省與紀錄。 因此未來的寫作方向會跟以往不太一樣,我會針對專案的經驗以及學習到的東西來分享,並且盡可能的詳述開發過程與思考方向,希望可以寫出 ChatGPT 比較不容易問到的東西,雖然可能過不久當它爬到本文後就被收編了XD...