WooCommerce Product schema 設定教學

在 Google 搜尋自己的商品時,如果看到的只是一條藍色文字連結,沒有商品縮圖、沒有價格、沒有星等評分,而隔壁同業的商品卻佔了更大版面、資訊一目了然,差別往往不在排名本身,而在有沒有正確輸出 WooCommerce Product schema。這段藏在頁面原始碼裡、購物者看不到的結構化資料,是讓 Google 看懂「這個頁面在賣什麼、賣多少錢、還有沒有貨」的關鍵。

WooCommerce 其實預設就會在單一商品頁輸出基本的 Product schema,問題通常不是「完全沒有」,而是欄位不齊、被佈景主題或外掛重複輸出、或是 schema 寫的內容跟頁面顯示對不上,導致 Google Search Console 一直跳警告、商品始終進不了豐富結果。這篇會帶你看清楚 Product schema 到底長什麼樣、WooCommerce 預設給了哪些、缺的怎麼補,以及怎麼驗證它真的被 Google 讀進去。

WooCommerce Product schema 是什麼,為什麼商品頁需要它

Product schema 是一段遵循 Schema.org 標準、通常以 JSON-LD 格式嵌在商品頁 HTML 裡的結構化資料,用來把商品名稱、價格、庫存、評分等資訊「翻譯」成搜尋引擎能無歧義讀懂的格式。購物者在前台看不到這段程式碼,但 Google 爬到頁面時會讀它。

舉個例子,假設你賣一副無線耳機。沒有 schema 時,Google 大概只知道「這頁是一個商品」;有了 schema,你等於明確告訴它:這是一副無線耳機、售價 2990 元、庫存有貨、平均 4.5 顆星、共 86 則評論。Google 拿到這些欄位後,就可能把它們直接顯示在搜尋結果上,形成所謂的豐富結果(rich results),讓你的商品在 SERP 上帶著圖片、價格與星等出現。

對台灣的 WooCommerce 商家來說,這件事的價值不在「衝排名」,而在同樣的排名位置下搶到更多點擊。當購物者在結果頁就能看到價格與評分,他們更傾向只在商品符合需求時才點進來,點擊品質更高、跳出率更低。結構化資料乾淨清楚,對 Google 近年的 AI 搜尋體驗也更友善,這是讓商品目錄維持「被搜尋系統理解」的基本盤。

要先建立一個觀念:schema 的品質完全取決於你餵給它的商品資料。價格、庫存狀態、商品識別碼如果在 WooCommerce 後台本身就是空的或錯的,再好的外掛也輸出不出有效的結構化資料。

WooCommerce 預設輸出哪些欄位,又缺了什麼

WooCommerce 本身就會在單一商品頁自動產生一段 @typeProduct 的 JSON-LD,資料直接從商品編輯器拉取,所以會跟你的商品目錄同步。預設輸出通常涵蓋這些欄位:

  • 商品名稱與商品頁網址(permalink)
  • 商品主圖
  • SKU 與庫存狀態(InStock/OutOfStock)
  • Offer 報價資料,包含原價與特價
  • 商品描述與簡短描述
  • 可變商品(variable product)以預設變化為基礎的處理
  • 啟用 WooCommerce 評論時的評分與評論數

對商品數量不多、不需要進階識別碼的小店,這個預設輸出已經足以讓商品頁具備豐富結果的資格。但 WooCommerce 的原生 schema 是刻意做得精簡的,以下這些對搜尋引擎理解商品有幫助的欄位,預設多半不會帶出來:

  • 品牌(brand)資訊
  • 完整的商品相簿圖片(預設多半只帶主圖)
  • 顏色、尺寸等詳細屬性
  • WooCommerce 評論系統以外的自訂評價來源
  • 全球識別碼,例如 GTIN、MPN

也就是說,原生輸出是「有效但不完整」。這個區別很重要,因為 Google Search Console 把缺欄位分成兩種等級:缺少必要欄位(name、offers、price、priceCurrency、availability 任一個缺了)會被判為錯誤、商品直接失去資格;缺少建議欄位(如 brand、評分)只會被標為警告,商品仍可能進豐富結果。先把錯誤清掉,警告再視情況補。

三種上 Product schema 的方法該怎麼選

加 schema 的本質,是把商品資料整理成搜尋引擎讀得懂的結構,你不需要重新設計商店或更動前台呈現。常見有三條路徑,依你的技術掌握度與店規模選一條就好,重點是不要同時用兩條導致重複輸出。

直接沿用 WooCommerce 原生 schema 並用 filter 擴充

如果你只想要乾淨的起點、不想多裝外掛,沿用原生 schema 是最省事的。先確認它真的有輸出:打開任一商品頁查看原始碼,搜尋 application/ld+json,看得到 "@type": "Product" 的區塊就代表正常。

原生 schema 不夠的欄位,WooCommerce 留了 filter 讓你補,這樣就不必另外塞一段獨立的 JSON-LD 到頁面上。例如下面這段加到子佈景主題的 functions.php 或一個小型自訂外掛裡,可以把品牌、相簿圖片與評分接進原生輸出:

add_filter( 'woocommerce_structured_data_product', function( $markup, $product ) {
    // 從商品屬性帶入品牌
    if ( $brand = $product->get_attribute( 'pa_brand' ) ) {
        $markup['brand'] = [ '@type' => 'Brand', 'name' => $brand ];
    }
    // 把相簿圖片併入 image 陣列
    $gallery_ids = $product->get_gallery_image_ids();
    if ( $gallery_ids ) {
        $images = is_array( $markup['image'] ?? [] ) ? $markup['image'] : array_filter( [ $markup['image'] ?? '' ] );
        foreach ( $gallery_ids as $id ) {
            if ( $url = wp_get_attachment_url( $id ) ) { $images[] = $url; }
        }
        $markup['image'] = array_values( array_unique( $images ) );
    }
    // 有評論時才帶 aggregateRating
    if ( $product->get_review_count() ) {
        $markup['aggregateRating'] = [
            '@type'       => 'AggregateRating',
            'ratingValue' => $product->get_average_rating(),
            'reviewCount' => $product->get_review_count(),
        ];
    }
    return $markup;
}, 10, 2 );

這條路適合不需要太多進階識別碼、又想逐步擴充而非整段替換的店家。

交給 SEO 外掛自動輸出(多數店家的最佳解)

不想碰程式碼的話,用一款支援 WooCommerce 且輸出 JSON-LD 的 SEO 外掛是最穩的做法。Rank Math 與 Yoast 都能做到,差別在於 Rank Math 免費版就內建 WooCommerce 商品 schema 模組、自動化與規模化能力較強,而 Yoast 的進階 WooCommerce 功能(例如全球識別碼批次匯入)需要另外購買 WooCommerce SEO 付費套件。

設定流程在不同外掛大同小異:跑完設定精靈、啟用結構化資料(Schema)模組,到「標題與 Meta → 商品」把預設 schema 型別設成 Product(而不是 Article 或 Web Page)並儲存。需要時再進個別商品的外掛欄位確認型別正確。外掛會直接讀 WooCommerce 的商品欄位輸出加強版 JSON-LD,剛好補上原生方法缺的品牌與評論標記。

要注意的是,這也是最容易造成重複 schema 的環節。如果你的佈景主題本身也有「rich snippets/結構化資料」選項,或你還裝了另一款專門的 schema 外掛,就會有兩三個來源同時輸出商品 schema,反而讓 Google 困惑。原則是整站只留一個來源負責商品 schema。

手刻 JSON-LD(需要完全掌控時才用)

當你是 headless 架構、外掛輸出的 schema 無法滿足需求、或要把多種 schema 型別組在同一區塊時,手刻 JSON-LD 提供最大彈性。最低限度必須包含 nameimageoffers(內含 pricepriceCurrencyavailability),建議再補 descriptionbrandskuaggregateRating

手刻的代價是要自己維護:價格、庫存、評論或網址改了而 schema 沒跟著改,Google 會把這段結構化資料視為不可靠。因此若要手刻,建議用動態 PHP 讀即時的 WooCommerce 商品物件、只在 is_product() 為真時輸出,而不是貼死值的靜態區塊。

台灣商家最容易踩的識別碼與幣別欄位

對台灣店家來說,最常被 Google Search Console 點名的兩個地方,一個是幣別,一個是全球識別碼。

幣別欄位 priceCurrency 是必填的錯誤級欄位,台灣商店應確保它輸出的是 TWD。WooCommerce 會依後台貨幣設定自動帶值,但若你曾改過自訂欄位對應、或外掛沒讀到正確來源,就可能出現缺 priceCurrency 的錯誤。事實上,自 2025 年 5 月起就有大量 WooCommerce 商家在 Search Console 收到「Missing field priceCurrency」的錯誤回報,這類問題多半要回頭檢查貨幣設定與外掛欄位對應,而不是商品本身缺資料。

至於全球識別碼,Google 會對缺少 GTIN、MPN、ISBN 的商品跳「No global identifier provided」警告。這裡有個關鍵原則:沒有真實識別碼就寧可不輸出,也不要填假值。GTIN 通常是製造商提供的數字碼,自有品牌或無條碼的商品本來就可能沒有,硬填一組湊數的數字反而會被判定為錯誤資料。SEO 外掛多半有「Use SKU as MPN」「從分類法對應品牌」「啟用全球識別碼」這類選項,確認它讀的是正確來源(商品屬性、分類法或自訂欄位)即可;真的沒有就把該識別碼的輸出關掉。

SKU 則是另一個常見的缺欄位來源,特別是有變化的商品(例如不同顏色的皮夾)。到商品編輯器的「庫存」分頁填一組唯一的 SKU 就能解掉這個警告。

怎麼驗證 schema 真的被 Google 讀進去

加完 schema 後別假設它生效了,一定要用工具實測幾個商品網址。最直接的兩個工具是 Google 複合式搜尋結果測試(Rich Results Test)與 Schema 標記驗證工具(Schema Markup Validator),兩者檢查的標準不同,要分開看。

複合式搜尋結果測試看的是「這頁能不能取得 Google 的豐富結果資格」。貼上正式上線的商品網址(不要只測草稿或本機環境),裝置選行動裝置,跑完之後確認三件事:偵測到的結構化資料區塊有 Product 或 Merchant listing、name/price/availability/image 等欄位都在、頁面顯示「符合複合式搜尋結果資格」。若有問題,會列出錯誤或警告。

Schema 標記驗證工具看的是「這段 JSON-LD 合不合 Schema.org 標準」,比 Google 用於豐富結果的標準更廣,會抓出語法問題、型別錯誤與棄用欄位。當兩個工具結果不一致時這樣判讀:通過豐富結果測試但驗證工具報問題,代表頁面有資格但結構不夠乾淨,仍該修掉語法或型別錯誤,以免影響其他搜尋引擎與未來的 Google 更新;反過來驗證工具過了但豐富結果測試說沒資格,就要回頭查 price、availability、image 這些 Google 要求的欄位是不是缺了、或頁面上根本沒顯示。

這裡帶出一條 Google 最在意的信任原則:schema 寫的內容必須跟購物者在頁面上看得到的一致。如果 schema 說有貨、頁面卻顯示缺貨,Google 可能直接忽略你整段結構化資料;同理,評分標記只能反映頁面上真實可見的評論,假造、隱藏或抄來的評論會讓頁面失去資格。換句話說,不要為了好看而輸出頁面上看不到的評分。

上線後怎麼在 Search Console 持續盯住 schema

schema 上線後,真正的監控在 Google Search Console,這裡會顯示 Google 長期處理你結構化資料的狀況,分成兩份報告要分清楚。

「商品摘要」(Product Snippets)報告對應的是一般網頁搜尋裡的商品豐富結果,列出帶有商品結構化資料的有效頁面、阻擋豐富結果的錯誤,以及限制呈現的警告。「商家資訊」(Merchant Listings)報告則對應購物式體驗,例如商品格狀區或輪播,這類結果一定會包含價格資料,報告會顯示哪些商品符合資格、有哪些 schema 問題影響曝光。一般中小型店家先把商品摘要的錯誤清乾淨,再看商家資訊。

修正流程是固定的:在報告裡點開某個錯誤類型,看受影響的網址,回到 WooCommerce 或外掛設定改掉問題,再回 Search Console 按「驗證修正」讓 Google 重新處理。要有耐心,即使 schema 改對了,搜尋結果也不會即時更新,Google 必須重新檢索與索引該頁;急的話可以用「網址審查 → 要求建立索引」加速。

schema 也會在網站更新時悄悄壞掉。換 SEO 或 schema 外掛、改動 WooCommerce 樣板、加裝評論或定價擴充、換佈景主題、搬主機或換網域之後,都建議重新測一輪正式網址,而不是只測程式碼片段。

從預設 schema 到穩定進豐富結果,該維持什麼節奏

WooCommerce Product schema 的核心始終是同一句話:讓搜尋引擎準確理解你的商品。WooCommerce 已經給了堪用的起點,多數店家要做的不是從零打造,而是補齊原生輸出缺的欄位、避免多來源重複輸出,並確保 schema 跟前台顯示一致。

實務上的執行順序很清楚:先確認貨幣設成 TWD、必要欄位齊全把錯誤清掉,再決定用原生 filter、SEO 外掛還是手刻其中一條路徑統一輸出,接著用複合式搜尋結果測試驗證資格,最後到 Search Console 的商品摘要與商家資訊報告持續監控。把這套流程跑順、並在每次大改版後重測,你的商品就能穩定維持被 Google 正確讀取與顯示的資格,在同一個排名位置上拿到更高的點擊。

相關文章
標籤: WooCommerce, 結構化資料, JSON-LD, Search Console, 豐富結果