你的商品還在手動KEY?WooCommerce 商品 API 從零到一實戰教學,解放你的雙手!

2025/07/16 | WC 開發

你的商品還在手動KEY?WooCommerce 商品 API 從零到一實戰教學,解放你的雙手!

嗨,我是浪花科技的資深工程師 Eric。在我們接手的案子中,最常聽到客戶的痛點之一就是:「我的商品有上千個,每次更新價格或庫存,都要一個一個點進去改,點到懷疑人生!」或是「我們公司的 ERP 系統有完整的商品資料,但每天都要手動複製貼上到 WooCommerce,超沒效率又容易出錯。」

如果你對這些場景心有戚戚焉,那這篇文章就是你的救贖。今天,我們不談複雜的理論,直接帶你動手玩玩 WordPress 開發者最愛的武器之一:WooCommerce REST API。這東西就像是打開你網站任督二脈的鑰匙,讓你能夠用程式自動化處理那些重複、繁瑣的商品管理任務。別再當個點擊工人了,讓我們一起用更聰明的方式管理你的電商王國吧!

第一步:申請你的 API 通行證 (API Keys)

在我們開始用程式碼「指揮」你的網站之前,得先拿到一把安全的鑰匙,也就是 API Keys。這組鑰匙包含 Consumer Key 和 Consumer Secret,它們是讓外部應用程式(例如你的腳本、ERP 系統)能夠安全地與你的 WooCommerce 網站溝通的憑證。

如何產生 API Keys?

步驟非常簡單,跟著我一步一步做:

  1. 登入你的 WordPress 後台。
  2. 在左側選單找到 WooCommerce > 設定 > 進階
  3. 點擊上方的 REST API 標籤頁。
  4. 點擊「新增金鑰」或「Create an API key」按鈕。
  5. 接下來你會看到三個欄位:
    • 描述 (Description): 給這組金鑰取個好記的名字,例如「我的 ERP 系統」、「商品批次更新腳本」,這樣你以後才知道這組鑰匙是幹嘛用的。
    • 使用者 (User): 選擇一個管理員帳號。API 的權限會跟著這個使用者跑。
    • 權限 (Permissions): 這是最重要的一步。你有三個選項:讀取 (Read)、寫入 (Write)、讀取/寫入 (Read/Write)。根據你的需求選擇,如果只是要讀取商品資料,就選「讀取」;如果要新增、修改、刪除商品,就選「讀-寫」。
  6. 點擊「產生 API 金鑰」。

完成後,畫面會顯示你的 Consumer KeyConsumer Secret。身為一個囉嗦的工程師,我必須鄭重警告你:這個畫面只會出現一次! 請立刻、馬上把這兩組金鑰複製下來,存放在安全的地方(例如密碼管理器),千萬不要外洩。它們就跟你的網站管理員密碼一樣重要,一旦流出,駭客就能對你的商品做任何事!

萬事俱備:你的第一個 API 請求

拿到鑰匙後,我們就可以來試試開門了。測試 API 最方便的工具是 Postman,但為了讓大家都能快速上手,我們今天用一個更底層、幾乎所有工程師電腦裡都有的工具:curl

WooCommerce API 的基本網址結構是:https://你的網域.com/wp-json/wc/v3/。我們接下來的所有操作都會基於這個網址。

用基本認證 (Basic Auth) 取得商品列表

最簡單的驗證方式就是 HTTP Basic Authentication。我們將 Consumer Key 當作使用者名稱,Consumer Secret 當作密碼。打開你的終端機 (Terminal),試著貼上並執行以下指令(記得換成你自己的資料):

curl -u YOUR_CONSUMER_KEY:YOUR_CONSUMER_SECRET https://yourdomain.com/wp-json/wc/v3/products

如果一切順利,你的終端機應該會噴出一大堆 JSON 格式的文字,裡面就是你網站上前 10 個商品的詳細資料。恭喜你!你已經成功和你的網站「對上話」了!

商品 API 實戰演練:CRUD 操作全解析

學會了溝通,接下來就是重頭戲:對商品進行增、刪、查、改 (CRUD) 的操作。這也是 API 最核心的價值所在。

C – Create (新增一個簡單商品)

假設我們要新增一件 T-shirt,名稱是「浪花科技 Logo T-shirt」,價格是 $500。我們需要發送一個 POST 請求到 /products 這個端點,並在請求的 body 中附上商品的資料。

curl -X POST -u YOUR_CONSUMER_KEY:YOUR_CONSUMER_SECRET \
-H "Content-Type: application/json" \
-d '{ 
  "name": "浪花科技 Logo T-shirt", 
  "type": "simple", 
  "regular_price": "500", 
  "description": "一件舒適又有型的純棉 T-shirt,展現你的工程師魂!",
  "short_description": "浪花科技經典 Logo T-shirt。",
  "categories": [ { "id": 9 } ],
  "images": [ { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" } ]
}' \
https://yourdomain.com/wp-json/wc/v3/products

執行成功後,你會收到一個 JSON 回應,裡面包含了剛剛建立好的商品所有資料,最重要的是它會有一個 `id`,這個 `id` 就是這件商品在資料庫裡的唯一身份證。

R – Read (讀取商品資料)

讀取我們在前面已經試過了,但其實它有很多玩法。例如,你想找特定 SKU 的商品,或是想看第二頁的資料:

  • 根據 SKU 查詢: /products?sku=LOGO-TSHIRT
  • 取得第二頁的商品列表 (每頁 20 個): /products?per_page=20&page=2
  • 取得特定 ID 的商品: /products/123 (將 123 換成你想查詢的商品 ID)

靈活運用這些查詢參數,可以讓你精準地抓到你想要的資料,而不是每次都撈回一整包。

U – Update (更新商品資訊)

假設剛剛那件 T-shirt 要特價了,價格從 $500 降到 $399,庫存也只剩下 10 件。我們需要對這個特定商品 ID 發送一個 PUT 請求。

curl -X PUT -u YOUR_CONSUMER_KEY:YOUR_CONSUMER_SECRET \
-H "Content-Type: application/json" \
-d '{ 
  "sale_price": "399",
  "stock_quantity": 10
}' \
https://yourdomain.com/wp-json/wc/v3/products/YOUR_PRODUCT_ID

記得將 `YOUR_PRODUCT_ID` 換成你剛剛新增商品後拿到的 ID。送出後,網站上的商品價格和庫存就會立刻被更新。是不是很神奇?這就是自動化同步 ERP 庫存的核心原理!

D – Delete (刪除商品)

如果某個商品要下架了,你可以用 DELETE 請求來把它刪除。但這裡有個小細節,身為工程師一定要提醒你。

# 將商品移至垃圾桶
curl -X DELETE -u YOUR_CONSUMER_KEY:YOUR_CONSUMER_SECRET https://yourdomain.com/wp-json/wc/v3/products/YOUR_PRODUCT_ID

# 永久刪除,無法復原!
curl -X DELETE -u YOUR_CONSUMER_KEY:YOUR_CONSUMER_SECRET https://yourdomain.com/wp-json/wc/v3/products/YOUR_PRODUCT_ID?force=true

預設的 DELETE 只是把商品丟到垃圾桶,你還可以從後台救回來。但如果加上了 `force=true` 參數,它就是真的從資料庫裡消失了,灰飛煙滅,神仙難救。所以,在執行永久刪除前,請務必再三確認,而且永遠都要有備份!相信我,半夜被客戶 call 醒救資料的滋味絕對不好受。

進階挑戰:管理可變商品 (Variable Products)

剛剛我們操作的都是「簡單商品」。但如果你的 T-shirt 有分 S, M, L 三種尺寸,那就是「可變商品」。

可變商品的結構比較複雜,它像是一個「父商品」(T-shirt 本身),底下掛著好幾個「子商品」,也就是「變化形」(Variations),例如 S 號 T-shirt、M 號 T-shirt。每個變化形都可以有自己獨立的 SKU、價格、庫存、圖片。

要操作它們,你會用到不同的端點:

  • 取得某個可變商品的所有變化形: GET /wp-json/wc/v3/products/<product_id>/variations
  • 為某個可變商品新增一個變化形: POST /wp-json/wc/v3/products/<product_id>/variations
  • 更新某個特定的變化形: PUT /wp-json/wc/v3/products/<product_id>/variations/<variation_id>

這部分的操作細節比較多,需要處理屬性 (attributes) 和對應的變化形資料,我們之後可以再寫一篇專門的文章來深入探討。但只要你理解了這個父子結構,基本上就掌握了八成的精髓。

總結:你的自動化電商帝國,從這裡開始

今天我們從申請 API 金鑰開始,一步步完成了對 WooCommerce 商品的增、刪、查、改。你可能覺得只是一些指令,但這背後代表的卻是無限的可能性。你可以:

  • 撰寫一個 Python 或 PHP 腳本,每天定時讀取 ERP 系統的 CSV 檔,自動更新網站上數千個商品的庫存與價格。
  • 打造一個內部的商品管理儀表板,讓行銷人員不需要登入 WordPress 後台,就能快速進行批次上下架。
  • 串接外部的供應商系統,當供應商有新品時,自動在你的網站上建立草稿商品。

WooCommerce 商品 API 使用教學 不僅僅是技術文件,它是你通往高效、自動化電商管理的門票。當你把這些重複性的工作都交給程式後,你才能真正專注在更重要的事上:品牌經營、行銷策略和客戶關係。

當然,API 的世界遠不止於此,訂單、顧客、優惠券… 幾乎所有 WooCommerce 的功能都可以透過 API 來操作。希望今天的教學能為你打開一扇新的大門。如果你在實作中遇到任何問題,或是想打造更複雜的企業級自動化流程,別客氣!

歡迎隨時與浪花科技的團隊聯繫,我們很樂意協助你打造真正會思考、會自己工作的智慧網站!

延伸閱讀

常見問題 (FAQ)

Q1: WooCommerce REST API 主要是用來做什麼的?

A: 簡單來說,它是用來「自動化」的。你可以透過它來自動處理各種電商任務,例如批次更新商品價格與庫存、將訂單資料同步到會計或 ERP 系統、建立客製化的管理後台,或是開發手機 App 來管理你的商店,徹底擺脫手動操作的惡夢。

Q2: 使用 API 金鑰安全嗎?會不會有被盜的風險?

A: 只要你的網站有安裝 SSL 憑證 (使用 HTTPS),通訊過程就是加密的,基本上是安全的。最大的風險來自於金鑰本身的保管。你必須像對待密碼一樣保護它,不要寫在公開的程式碼或文件裡。最好的做法是使用伺服器的環境變數來儲存,並為不同的應用程式設定不同權限的金鑰,以分散風險。

Q3: 我可以一次更新大量的商品嗎?一個一個呼叫 API 感覺很慢。

A: 問得很好!WooCommerce API 提供了「批次更新 (Batch Update)」的功能。你可以透過 POST /wp-json/wc/v3/products/batch 這個端點,在一次請求中同時傳送一個包含多個新增、更新或刪除操作的陣列。這能大幅減少 API 的請求次數,顯著提升大量資料處理的效率,是進行大規模同步時的必備技巧。

 
立即諮詢,索取免費1年網站保固