- 登入
- 註冊
用 [products] 短代碼在頁面顯示 WooCommerce 商品
想在某個頁面、文章、Vibe 畫布、甚至側邊欄顯示一組精選商品?WooCommerce 內建的 [products] 短代碼一行就搞定,不用拉 block、不用設樣式,貼上去就出現商品卡片。
本篇講這個短代碼的所有參數、最常用的 10 個組合範例、跟自訂 listing block 的選擇建議,以及進階用法(多個分類交集、屬性篩選、特價/熱銷專區)。
什麼是 [products] 短代碼#
短代碼(Shortcode)是 WordPress 內建的「一行字產出一塊內容」機制。[products] 是 WooCommerce 提供的,效果是:把你商店裡符合條件的商品,以網格卡片方式渲染出來。
放在哪裡都可以:
- 文章內容(段落間插入精選商品)
- 頁面(首頁的「人氣商品」「新品上架」區段)
- Vibe 畫布的 HTML 區塊
- 側邊欄 widget
- 頁尾(顯示熱銷 Top 3)
最基本的用法#
在編輯器內加一個「短代碼」區塊(或在段落區塊直接打),貼上:
[products]
儲存後前台會顯示商店裡所有商品、依名稱排序、4 欄網格。實務上你會加參數限制數量、欄數、排序:
[products limit="8" columns="4" orderby="popularity"]
意思是「顯示 8 個商品、分 4 欄、依人氣排序」。下方逐一說明每個可用的參數。
顯示控制參數#
控制商品「怎麼顯示」、「顯示幾個」、「依什麼排序」。
| 參數 | 作用 | 可填值 | 預設 |
|---|---|---|---|
limit | 顯示幾個商品 | 整數,或 -1 代表全部 | -1 |
columns | 分幾欄顯示 | 整數 | 4 |
paginate | 是否顯示分頁按鈕 | true / false | false |
orderby | 排序依據 | title / date / id / menu_order / popularity / rand / rating | title |
order | 排序方向 | ASC(小到大)/ DESC(大到小) | ASC |
class | 外層 div 自訂 CSS class | 任意字串 | 無 |
orderby 各選項解釋#
title:商品名稱字母順序date:商品建立日期(搭配order="DESC"就是「最新上架」)id:商品 ID(後台分配的編號)menu_order:商品自訂排序(後台商品列表可拖曳的順序)popularity:依銷量排(「熱銷排行榜」常用)rand:隨機(每次刷新順序不同)rating:依平均評分排
商品篩選參數#
決定「顯示哪些商品」。可以單獨用、也可以組合用(除了 on_sale / best_selling / top_rated 這三個互斥,看下一節)。
| 參數 | 作用 | 可填值 |
|---|---|---|
ids | 指定要顯示的商品 ID | 逗號分隔的 ID(例如 "12,45,89") |
skus | 指定要顯示的商品 SKU | 逗號分隔的 SKU(例如 "TS-001,BG-002") |
category | 篩選商品分類 | 逗號分隔的分類 slug(例如 "shirts,bags") |
tag | 篩選商品標籤 | 逗號分隔的標籤 slug |
attribute | 指定要篩選的屬性 | 單個屬性 slug(例如 "color") |
terms | 該屬性要符合的值 | 逗號分隔的屬性值 slug(搭配 attribute 用) |
visibility | 商品顯示狀態 | visible / catalog / search / hidden / featured |
visibility 各選項說明#
visible:商店與搜尋都顯示(預設)catalog:只在商店列表顯示、搜尋找不到search:只在搜尋結果顯示、商店列表找不到hidden:兩邊都隱藏(只能用直接網址訪問)featured:你在後台標記為「特色商品」的那批
實務上最常用 visibility="featured" 做首頁「精選商品」區塊。
操作符參數(多分類交集 / 排除)#
當 category / tag / terms 填多個值時,可以用對應的 operator 控制邏輯。
| 參數 | 作用 | 可填值 | 預設 |
|---|---|---|---|
cat_operator | 分類間的邏輯 | IN / NOT IN / AND | IN |
tag_operator | 標籤間的邏輯 | IN / NOT IN / AND | IN |
terms_operator | 屬性值間的邏輯 | IN / NOT IN / AND | IN |
IN:屬於其中任一個(聯集)。例如category="shirts,bags"配cat_operator="IN"顯示「上衣或包包」NOT IN:不屬於這些(排除)。例如顯示「除了上衣、包包以外」的商品AND:同時屬於全部(交集)。例如category="shirts,limited"配cat_operator="AND"顯示「同時屬於上衣與限定」
特殊篩選(三選一互斥)#
這 3 個篩選一次只能用 1 個(同時用會衝突)。
| 參數 | 作用 | 可填值 |
|---|---|---|
on_sale | 只顯示特價中的商品 | true / false |
best_selling | 只顯示熱銷商品(依銷量排) | true / false |
top_rated | 只顯示高評價商品(依平均星數排) | true / false |
用 on_sale="true" 時,orderby 預設用 menu_order,需要排銷量可另外指定 orderby="popularity"。
10 個常用組合範例#
1. 首頁「人氣商品 8 個」#
[products limit="8" columns="4" orderby="popularity"]
2. 首頁「最新上架 4 個」#
[products limit="4" columns="4" orderby="date" order="DESC"]
3. 特價專區(顯示所有特價商品 + 分頁)#
[products columns="3" paginate="true" on_sale="true" orderby="popularity"]
4. 「特色商品」首頁區塊#
[products limit="6" columns="3" visibility="featured"]
5. 熱銷排行榜 Top 5#
[products limit="5" columns="5" best_selling="true"]
6. 高評價商品 Top 4#
[products limit="4" columns="4" top_rated="true"]
7. 指定 3 個商品 ID(手動精選)#
[products ids="123,456,789" columns="3"]
實務應用:寫部落格文章介紹 3 個產品時,文末用這段顯示這 3 個商品的卡片。
8. 某分類商品(聯集)#
[products limit="8" columns="4" category="shirts,bags"]
顯示「上衣」或「包包」分類底下的商品(預設操作符 IN)。
9. 多分類交集(同時屬於兩個分類)#
[products limit="8" columns="4" category="shirts,limited" cat_operator="AND"]
顯示「同時是上衣,也屬於限定系列」的商品。前提:你後台真的有商品同時打了這兩個分類。
10. 屬性篩選(特定顏色、尺寸)#
[products limit="8" columns="4" attribute="color" terms="red,blue"]
顯示「顏色屬性是紅色或藍色」的商品。前提:你商品有定義 color 屬性,並指派給商品。
怎麼找出商品 ID、分類 slug、SKU#
商品 ID#
- 後台「商品」→「所有商品」
- 滑鼠移到任一商品行,下方狀態列會出現該商品的 URL,網址尾巴
?post=123的 123 就是 ID - 或直接點商品進入編輯頁,瀏覽器網址欄看
?post=XXX
分類 / 標籤 slug#
- 後台「商品」→「分類」(或「標籤」)
- 右側清單每個分類旁邊有「代稱」(Slug)欄
- 例如分類名稱「上衣」對應 slug
shirts
商品 SKU#
編輯商品時,「商品資料」→「一般」分頁裡的「商品編號(SKU)」欄位。如果你後台 SKU 都沒填,就先填好再用 skus 參數。
把短代碼放在哪裡#
編輯器內#
在文章 / 頁面編輯器加一個「短代碼」區塊(搜尋「shortcode」),把整段 [products ...] 貼進去。或者在段落區塊內直接貼也可以。
Vibe 畫布#
在 Vibe 畫布的 HTML 區塊內貼短代碼也會生效。適合在自訂 landing page 中插入「精選商品」區段。
小工具 / 側邊欄#
「外觀」→「小工具」(秒站在「網站設定」→「小工具」)→ 加一個「短代碼」小工具到側邊欄,貼進短代碼。適合全站側邊欄顯示「熱銷 Top 3」。
短代碼 vs 其他做法的選擇#
| 做法 | 適合情境 | 缺點 |
|---|---|---|
| [products] 短代碼 | 快速、邏輯篩選複雜(多分類交集、屬性)、放側邊欄 | 樣式跟商店預設一致,難客製 |
| 「插入文章或商品列表卡片」block | 視覺優先、要客製商品卡片樣式 | 篩選邏輯不像短代碼這麼彈性 |
| WooCommerce 內建商品 block | 編輯器直接拖、編輯時可即時預覽 | 分頁與屬性篩選功能不全 |
| Greenshift Query Loop | 完全客製卡片設計、複雜版面 | 學習門檻最高、設定步驟多 |
原則:
- 快速放幾個商品就走 → 短代碼
- 需要客製商品卡片視覺 → 列表 block 或 Greenshift
- 需要邏輯篩選(多分類交集、屬性、特價)→ 短代碼
常見問題
短代碼貼進去顯示成純文字、沒變成商品卡片?
三個檢查:
- 網站有沒有安裝並啟用 WooCommerce 外掛?沒裝就不會解析這個短代碼
- 是不是貼在「程式碼」(Code)區塊裡?程式碼區塊不會執行短代碼
- 引號是不是被自動轉成中文全形引號了?例如
limit="4"變成limit=「4」會解析失敗
顯示出來卻沒商品(空白或「沒有找到商品」)?
- 篩選條件太嚴格(例如指定的分類底下根本沒商品)
cat_operator="AND"用了但沒有商品同時屬於所有指定分類visibility="featured"但你後台還沒標任何商品為「特色商品」- 商品狀態是「草稿」「私密」、或庫存設成「缺貨且不顯示」
手機版欄數要不一樣?
columns 只設一個數字,無法分桌面 / 手機。手機版的欄數由 WooCommerce 內建 CSS 控制(通常自動降成 2 欄)。要分裝置精細控制,要透過自訂 CSS 改 .products 的 grid-template-columns。
想排除特定商品?
ids 只能正向選,沒有 exclude_ids 參數。要排除特定商品,要走「先把要排除的設成一個分類,然後用 cat_operator="NOT IN" 排除這個分類」這種繞路做法,或改用 Greenshift Query Loop。
同一頁可以放兩個以上的短代碼嗎?
可以,且通常一頁有 2-4 個是合理配置(例如首頁同時顯示「特色商品」「最新上架」「熱銷 Top 5」三段)。只要每段參數不同就行。