如何開發 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 可能會發展成監督式的 AI,也就是當 AI 自己在跑的時候,會有另外一個 AI 來檢查它現在做的每一件事情是否都真的有往正確的方向推進。 當下聽到覺得這個 idea 很棒,但具體要怎麼實作完全沒有概念,更不用說這樣子 token 消耗的成本會不會變成兩倍?而且監督 AI 的 AI 需要有什麼能力?該以哪一種方式來進行監督?然後又該如何把找出的問題回報給原本的 AI 呢? 這一切問題在我最近研究 Claude Code 以外的工具時意外發現了解決方案,那就是之前我拿來做為 Discord Bot 的 AI 引擎 OMP。 OMP 是 PI 的分支,想理解什麼是 OMP 可以先從 PI 開始理解,PI 是一套開源且輕量化的 Coding CLI,也是跟 Claude Code 一樣跑在終端機的寫程式 Agent。 相較於 Claude Code 的封閉,PI 完全開源,並且支援多家不同的模型,PI 強調有需要什麼工具再自己額外安裝,就不會像 Claude Code 一樣原廠給你什麼就只能用什麼。 而 OMP 是 PI 的分支,它的概念跟...

之前分享我請 AI 設計的一套專門用來管理手邊待辦清單的專案管理軟體,邊用的時候我就在邊思考著:當我新增這些任務之後,我還是要回到終端機去把這些任務的描述、相關的文件以及完成的目標告訴 AI,然後等它跑完之後我再驗收,再回到我的計時軟體裡面來記錄是已完成還是該暫停。 如果可以在開立任務的時候,就能直接指派 AI 來做這件事情,是不是就可以少一個重複描述、開發需求的流程?剛好有了這個想法之後,就在 YouTube 上面看到一個叫做 Auto Claude 的專案。 它把 Claude 直接跟看板軟體整合,並且可以在裡面詢問 AI 關於專案的細節以及產生開發藍圖,也能設定專案的亮點與相關資訊。 我看到後驚為天人,覺得這似乎是另外一種理想的 AI 開發軟體,本想直接下載裝起來用,但請 Claude 研究後發現它有一些問題,於是就想說自己來開發,順便理解關於整個 Loop Engineering 的概念。 Claude Orchestrator 這次一樣是使用 Glaze 來開發,請它建立好專案的環境之後,然後再回到終端機去接手後續的多工並行。我的做法是先請 AI 去參考 Auto...

常常在社群媒體上看到各種自動化工具的廣告,從早期的 n8n 開始到現在 AI Agent 自動完成任務,這些工具跟流程都很棒。但是回到使用者本身,我們真的知道自己有哪些工作是可以被自動化或是應該「自動化」的嗎? 這就讓我回想起以前給自己的工作要求,那就是要把手上所做的每一件事情都記錄下來,並且可以明確看到每項任務的執行時間以及頻率,這樣事後才有辦法做回顧,我把這樣的理念也應用到承接專案的層面上。 這也是為什麼我有一些專案都是採取時薪計價的開發模式,因為我需要讓客戶知道他的預算都花在哪些項目,來藉此把資源用在合適的任務上。 我最早使用的即時軟體叫做 Ora,這是一套結合看板管理、敏捷開發流程、時數統計,甚至還有內建聊天討論串的一套強大工具。 它長期都是免費的,付費方案是團隊成員超過計算,所以我都是使用它來進行與客戶的專案管理,它的介面十分清楚且一目瞭然,可以縱觀地知道是哪一類型的任務花最多時間,也可以細看到具體是在處理哪一個問題所消耗的時數。 但當某天我打開準備使用它的時候,發現它被另外一套專案管理軟體 ClickUp...