~/blog/woocommerce-product-api-tutorial-from-scratch.md
電商與 WooCommerce · 2025 / 07 / 16

上千個商品手動改價改到麻木?WooCommerce 商品 API 實戰入門

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
上千個商品手動改價改到麻木?WooCommerce 商品 API 實戰入門
目錄 table-of-contents.md

上千個商品的價格與庫存更新,本來就不該經過任何人的滑鼠。WooCommerce 的商品 REST API 能讓 ERP 的資料直接寫進商店,省下每天複製貼上的工時,也順手消滅了手動 key 錯價格的風險。這篇從零開始,帶你完成第一支商品 API 串接的實戰入門。

如果你對這些場景心有戚戚焉,那這篇文章就是你的救贖。今天,我們不談複雜的理論,直接帶你動手玩玩 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

常見問題

如何取得 WooCommerce REST API 的金鑰(API Keys)?
登入 WordPress 後台,到「WooCommerce > 設定 > 進階 > REST API」,點「新增金鑰」,填寫描述、選擇對應使用者與權限(讀取/寫入/讀取寫入),再產生金鑰即可。產生後會顯示 Consumer Key 與 Consumer Secret,這個畫面只會出現一次,務必立即妥善保存。
WooCommerce REST API 的權限選項有哪些,該怎麼選?
權限分為讀取(Read)、寫入(Write)、讀取/寫入(Read/Write)三種。若只需讀取商品資料就選「讀取」;若要新增、修改或刪除商品,則選「讀取/寫入」。權限會跟著金鑰指定的使用者帳號運作。
WooCommerce 商品 API 的基本網址與認證方式是什麼?
基本網址結構為 https://你的網域/wp-json/wc/v3/。最簡單的認證方式是 HTTP Basic Authentication,將 Consumer Key 當作使用者名稱、Consumer Secret 當作密碼。例如用 curl -u KEY:SECRET 對 /wp-json/wc/v3/products 發送請求即可取得商品列表。
用 WooCommerce API 刪除商品時,force=true 有什麼差別?
預設的 DELETE 請求只是把商品移到垃圾桶,之後仍可從後台救回。若加上 force=true 參數,則會從資料庫永久刪除、無法復原。執行永久刪除前務必再三確認並確保有備份。
簡單商品和可變商品在 API 操作上有什麼不同?
簡單商品直接操作 /products 端點即可。可變商品是一個父商品下掛多個變化形(Variations),每個變化形可有自己的 SKU、價格、庫存與圖片,需透過 /products/<product_id>/variations 端點來取得、新增或更新個別變化形。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?