如何開發 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 開發日常

如果有一個平台,可以協助你: 完整紀錄開發產品的過程,從想法、手稿到實際動工 紀錄產品開發中遇到的困難、解決方法與成長經驗 查看產品從模糊概念,逐步轉化為 MVP、再到 PMF 的歷程 透過時間軸、行事曆與圖表,檢視每月的開發狀況 如果你對這樣的紀錄方式感興趣,那你一定會想試試看 aiker(艾可)。 有別於一般搶奪你注意力的社群平台,aiker 的設計初衷就是幫助你專注目標。只要每天順手更新開發狀況或心得,就能在產品履歷頁看到你努力的成果: 你可以在這裡實際瀏覽 aiker 的開發歷程,感受若將自己的專案以這種方式呈現,會是什麼樣子:https://aiker.app/products/288a712d-d942-4d3f-a50d-f3741895bb21 不要你的注意力,只要你的恆毅力! 為了鼓勵你更新開發動態,一進入首頁就會看到貼文介面。發文當下可同時設定分類與關聯產品,方便日後回顧;想要瀏覽產品開發歷程的人,也能透過你設計的分類快速搜尋。 此外,貼文還提供許多寫作輔助功能: 輸入 @ai:請求 AI 搶頭香發第一則留言,你也可以回覆 AI 留言,進一步與它討論。AI...

多巴胺(Dopamine)是一種神經傳遞物質,負責傳遞興奮和愉悅感。能引起渴望、興奮和希望等情緒,激勵人們追求目標。 上週日感冒了,很久沒有這麼嚴重的大感冒,發燒加喉嚨、頭爆炸痛,連續幾個晚上都沒什麼睡,白天完全沒有體力上工,不是在睡覺就是在發呆放空,受不了最後還是看了醫生吃了藥,每天等著症狀好轉。 到了週三稍微有點精神可以看書,看完「流言終結者」主持人亞當的書「創客精神」後一整個被激勵,很想要來動手做些什麼,於是拿出筆記本把一些點子畫下來,我想到可以做一個平台來搜集大家使用 Vibe Coding 開發出來的作品: 由於還沒有體力坐在電腦前工作,我就想說用平板先來做個雛形看看,付費解鎖了 Claude,也試了 Replit、Firebase Studio 來玩看看,很快的就有網站原型,再從這個原型去發想更多的功能細節。 第一次的衝擊 隔天因為需要回一些工作的訊息就開了電腦,想説回完後就關機繼續休息,結果想說把昨天弄的原型用 Cursor 來重做一次,能夠直接自己修改程式碼還是比較安心,但我忽然靈光一閃,我不是想要讓自己投入到 Vibe Coding...

原本努力了一個半月的新產品眼看就要正式釋出了,但在請了幾位客戶幫忙測試後,毅然決然暫停開發,主因是新產品有一些致命且短期無法解決的問題,再加上收入模式不明確,繼續開發下去會把自己推入險境中。 反而是請客戶試用的過程中,收到不少新功能的建議,考量到要顧好既有客戶以及營收狀況,還是決定先以既有產品的擴充功能為主,把營收站穩後再來另開戰場。 工作佔比 五月份總工作時數為 66.98 小時,比四月增加了 1.34 小時。各類工作佔比如下: 行銷:14% 產品更新:38% 產品研發:48% 這個月從下半月開始,全面採用 Vibe Coding 模式開發,在離開電腦前下好指令,回來後再驗收成果,一開始覺得很爽快,有一種人不在電腦前還是有進度的錯覺,尤其是在寫新外掛的雛形時很快就能獲得一些成果。 但如果寫流程比較多的功能,在驗收時就會開始感受到混亂,像是引用錯參考資料或是沒有遵循設計模式,一個檔案超過 500 行是家常便飯,事後反而要花時間在釐清甚至重新整理它的寫法,這部分我覺得應該可以透過提示詞來慢慢跟它磨合,就像以前跟朋友一起合作開發一樣,需要把相關的事項溝通清楚。 行銷 內容行銷...