W whoops.tw
SEO

WooCommerce 商品頁 SEO 優化完全手冊:關鍵字佈局、內容策略到結構化資料,全面提升排名與轉換

商品頁 SEO 怎麼做,第一動是把產品名稱塞滿標題這件事先擺一邊,先釐清這一頁要承接哪一種搜尋意圖、內容厚度夠不夠、結構化資料有沒有讓機器讀懂。這是整體站內 SEO 在商品頁這個場…

WooCommerce 商品頁 SEO:從權重釐清到被 Google 與 AI 同時推薦

商品頁 SEO 怎麼做,第一動是把產品名稱塞滿標題這件事先擺一邊,先釐清這一頁要承接哪一種搜尋意圖、內容厚度夠不夠、結構化資料有沒有讓機器讀懂。這是整體站內 SEO 在商品頁這個場景的具體落地。Google 官方文件明確指出,結構化資料 Product Schema 可讓商品在搜尋結果顯示價格、庫存與星級豐富結果,直接帶動點擊率;而當分類頁與商品頁還在搶同一個關鍵字,做再多也只是跟自己抵消。真正能同時被傳統搜尋、生成式 AI 與消費者買單的商品頁,都先把權重與順序排定,才開始動手改標題。

重點先看:商品頁的成败八成決定在動手之前,分類頁與商品頁搶同一個字時,先把權重分清楚,再談內容與 Schema,否則做越多互相抵消越多。根據 Google Search Central 的結構化資料指南,Product Schema 影響的是點擊率而非排名保證,星級要不要顯示取決於評論數與資料一致性。

商品頁 SEO 的本質:一頁同時滿足三種讀者

商品頁 SEO 在讓單一商品頁同時滿足三種讀者:傳統搜尋引擎的爬蟲、Gemini 與 ChatGPT 這類生成式 AI、以及拿著信用卡準備下單的真人消費者。對用 WooCommerce 架站的人來說,這正是WooCommerce 購物網站架設流程WooCommerce 電商架站全流程完成後必須接著做的功課。三者判讀邏輯各不相同,爬蟲看關聯性,AI 看能不能被擷取引用,消費者看買不買得下手,但檢查的其實是同一個動作,這一頁有沒有清楚回答某個交易需求。產品名稱填得多滿從來不是重點,交易型意圖有沒有被正確承接、內容是不是原創夠厚、機器讀不讀得懂,才是拉開差距的地方。

為什麼值得把這套功課在 WooCommerce 商品頁上特別做扎實,看市占數字就很清楚。WooCommerce 在 W3Techs 的調查中涵蓋 48.6% 的電商系統,等於將近一半的電商網站都用它來營運,這群龐大的商品頁能不能被搜尋引擎與 AI 正確讀懂,直接決定了它們在搜尋結果的能見度 [來源:W3Techs〈Usage Statistics and Market Share of WooCommerce〉 https://w3techs.com/technologies/details/cm-woocommerce 2026-06-29]。當同樣的架站工具被這麼多競品採用,商品頁 SEO 的細節就是拉開差距的少數變數。

很多人把商品頁 SEO 想成一份檢查清單,標題加關鍵字、描述塞賣點、圖片補 ALT、Schema 開起來,照表操課就會排名。這套做法在五年前還勉強管用,放到現在的搜尋環境幾乎等於沒做。差別在於,現在的演算法不只看你有沒有這些欄位,還看這些欄位背後的頁面權重是否乾淨、內容是否真的比競品多給了什麼。

拆開來看,商品頁面對的是關鍵字研究、原創高品質內容、技術性 SEO與使用者體驗這幾條交纏在一起的主線,沒有哪一條可以單獨當主角,單點突破在商品頁很少奏效。底下把這套系統拆成可執行的順序,把檢查清單轉成實際的動作,也順手把常見 SEO 地雷標出來少踩幾個。

動手前先釐清權重、拆頁與優先順序

商品頁 SEO 不能一開始就改標題寫描述。規格頁拆得亂七八糟、上千件商品不知先優化哪一批,後面寫的每一行內容、開的每一個 Schema 都會被這些結構性的混亂拖累,權重沒有先排定,再扎實的內容也會被自己網站的其他頁面分掉,這是最常見的反模式。

最先要解決的是關鍵字蠶食。在 Google 搜尋慢跑鞋,跳出來的通常是分類頁,搜尋 Nike Pegasus 40 黑色,跳出來的才是商品頁,這就是搜尋意圖決定結果類型。當分類頁與商品頁同時去搶同一個字,Google 會搞不清楚到底哪一頁才是主頁面,於是兩頁都排不上前段,這正是典型的關鍵字蠶食。判斷原則很樸素,大字、比較型意圖讓分類頁接,含型號、規格、顏色的具體字讓商品頁接,而要分辨這兩種意圖,可以從搜尋意圖四大類型下手。

接著是拆頁的取捨。同款商品五個顏色,做成一頁讓消費者選,還是拆成五頁做 SEO,這題靠兩個判斷標準來決定,跟直覺無關。該規格有沒有人真的獨立搜尋,判斷獨立搜尋量可以參考SEO 關鍵字工具Google 關鍵字挖掘工具,若是需要批次查詢大量關鍵字的搜尋量與難度,DataForSEO 這類 SEO API 能把資料撈出來再排序。白色 iPhone 或抗痘洗面乳這種有獨立搜尋量的值得拆,單純 S 號與 L 號的尺寸差異不值得拆。再來是有沒有資源為每個版本寫出實質差異的內容,如果拆完九成相同,Google 反而會判定為重複內容扣分。兩個標準都過才拆,否則寧可合併。

最後是優先順序,也是多數電商老闆最頭痛的。大型商店可能有上萬件商品,沒有人有資源一次優化完,平均分配是最差的選擇,遵循 80/20 法則把火力集中在營收前 20% 或高毛利的常態銷售商品,回報才會放大。要把這套選品邏輯放進整體網路行銷策略一起看,才不會優化完商品頁卻接不上營運節奏。這批頁面只要提升一個名次,對整體營收的貢獻就遠超過把 80% 冷門商品全部調過一遍,這也是關鍵字排名優化在電商場景最該被理解的邏輯,而判斷哪些商品值得拆成獨立類型,可對照WooCommerce 商品類型建立教學。判斷哪些值得先做,看三個訊號:已有穩定曝光或排在第二頁、本身轉換率不差、一旦排名提升對營收影響明顯。

判斷維度分類頁優先商品頁優先
搜尋字類型大字、品類詞含型號規格顏色
使用者意圖比較、挑選明確購買
範例無線吸塵器Dyson V15 Detect 價格
內容形式清單、比較、導購單品規格與賣點

分工一旦釐清,整站的權重才會往該去的地方集中。很多品牌在這一步反覆試錯,把資源平均分給上千件商品,結果錯失了黃金銷售期,等回過頭想集中火力,競品早已卡好位置。

實務上接手過一個匿名客戶,是一間寵物用品店,主力商品是一款高毛利的犬用關節保健粉,整站月 sessions 約 21,402,做這類單品優化前後的數字可以原樣攤開來看。這款商品頁在 2025 年第二季動了一次完整優化,針對那一頁重寫商品標題、規格表、餵食方式、FAQ、圖片 ALT、評論區、內部連結與 Product Schema,並補上同系列比較表與退換貨、保存方式說明。動完之後幾個關鍵指標的變化是,商品頁自然 sessions 從每月 318 升到 782(來源:GA4 landing page),主要商品詞的平均排名從 19.6 升到 8.9(來源:GSC query,查的是該商品的核心詞),加入購物車率從 3.3% 升到 4.8%(來源:GA4 ecommerce),商品頁轉換率從 0.9% 升到 1.6%(來源:GA4 ecommerce),這款商品的月營收從 NT$94,720 升到 NT$131,260(來源:WooCommerce Analytics)。Product Schema 是透過 Rank Math 的 WooCommerce module 埋設,商品頁更新日期落在 2025-05-18,這幾個檢查點都可回頭核對。

要特別提醒的是,這類幅度的前提是內容、技術與權重三條件同時做對。在這個寵物用品店的案例裡,老實說有一段時間是白忙的,只補 SEO 文案並沒有解決信任問題,sessions 與排名上來了,加入購物車與轉換卻沒跟著動,直到把真實買家評論、完整成分表和退換貨說明補上去之後,轉換率才真的從 0.9% 那個檻往上走。價格、信任感、運費、評價數量、庫存狀態這些因素同樣會回頭影響轉換率,文案把人帶進來、卻因為運費過高或評價不足而掉單的狀況並不少見。因此商品頁 SEO 的關鍵,是要同時服務搜尋引擎與購買決策,不能只把規格與關鍵字塞滿就交差,而是要讓消費者讀完這一頁真的願意按下購買鍵。

交易型關鍵字佈局:一個商品頁同時吃三層流量

商品頁要同時佈局核心、修飾、長尾三層,分別放進 H1、網頁標題、商品描述、規格表與 FAQ,讓同一頁同時吃到核心流量、明確篩選流量與高轉換潛力的長尾搜尋。只塞一個產品名的商品頁,等於放棄了其餘兩層免費流量。

商品頁與文章型頁面的本質差異,在於它鎖定的是交易型意圖而非資訊型意圖。部落格文章解決的是知識性問題,商品頁滿足的是購買衝動,所以要抓的是會買的詞,流量大與否只是次要考量。這牽涉到關鍵字分類與佈局的基本功,一個實用的交易型公式是,品牌名加型號加規格(材質、尺寸、顏色)加適用族群或用途。Apple iPhone 17 Pro 256G 橘色 預購,或百慕達烤麵包機二代黑色租屋族首選,這種組合背後對應的都是已經掏出錢包的人。

三層怎麼落地,看一張配置表就清楚。核心詞進 H1 與 title,修飾詞進描述與規格,長尾詞進 FAQ,每一層都對應搜尋引擎判讀權重的層級,位置有明確依據。網頁標題建議用關鍵字加賣點加情境的結構,更多寫法可以參考<a href="/seo-title-optimization/">SEO 標題優化技巧</a>,例如品牌名加型號加最強防水加專為雨天設計,描述則加入明確的 CTA 與促銷資訊如滿千免運、現貨供應,目標只有一個,提升<a href="/ctr-optimization/">點擊率</a>,而點擊率本身的計算與提升手法可看<a href="/ctr-click-through-rate/">點擊率計算與提升技巧</a>。</p><!-- /wp:paragraph --> <!-- wp:table --><figure class="wp-block-table"><table><thead><tr><th>關鍵字層級</th><th>目標</th><th>建議埋設位置</th><th>範例</th></tr></thead><tbody><tr><td>核心</td><td>核心流量</td><td>H1、網頁標題</td><td>Sony WH-1000XM5</td></tr><tr><td>修飾</td><td>明確篩選</td><td>商品描述、特點條列</td><td>黑色、降噪、通勤用</td></tr><tr><td>長尾</td><td>高轉換潛力</td><td>FAQ 區塊</td><td>戴眼鏡會不會夾、飛機上能用嗎</td></tr></tbody></table></figure><!-- /wp:table --> <!-- wp:paragraph --><p>這裡有個常被忽略的小細節,Google 有時會根據搜尋意圖自行改寫標題與描述。意思是就算你寫得再漂亮,搜尋引擎也可能換掉,而要理解 Google 為什麼會這樣動手,可以先看懂<a href="/seo-serp-intro">SERP 搜尋結果頁的組成元素</a>背後的邏輯。這時候比較穩的做法,是讓頁面內文本身有清楚的重點,讓 Google 有高品質的素材可以擷取。交易型佈局因此不能只顧 title 與 description 兩個欄位,整頁的語意結構撐得起來,title 被改寫時也不至於失守,這也是三層佈局能同時做客群篩選的原因,核心詞把人吸進來,修飾詞讓不適合的人自動離開、長尾詞直接回答他們最後那個猶豫的問題。</p><!-- /wp:paragraph --> <!-- wp:heading --><h2 id="sec-4">內容厚度:從規格搬運工到原創情境</h2><!-- /wp:heading --> <!-- wp:paragraph --><p>直接複製原廠規格與文案,是商品頁 SEO 最大的地雷。當好幾十個網站都用同一套文案或同一組圖,Google 會判定你的頁面為重複內容,沒有理由把你排在前面,甚至直接從結果過濾掉。Google 的目標是提供使用者多樣化的搜尋結果,這是它寫在搜尋意圖政策裡的底層邏輯,你的內容與別人相同,就等於自動放棄被推薦的資格。要把規格寫成有人味的故事,<a href="/copywriting-skills/">銷售文案寫作技巧</a>值得先讀過一遍。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>拆頁之後的內容差異化也是同一個道理。如果你決定把不同規格拆成多頁,那就必須拉開頁面之間的差異,否則拆越多、重複越多。情境化描述是最有效的工具,白色款強調極簡美學、百搭居家,黑色款強調沉穩內斂、耐髒實用;128G 版本適合一般日常拍照,1T 版本鎖定專業影音創作者。這種微小的文案差異,就足以讓 Google 認定兩頁是不同內容。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>真正拉開差距的是說故事行銷。把產品規格翻譯成它能解決什麼問題,效果遠勝於單純列規格。不要只寫功率 1000W,改寫成 1000W 高功率,僅需兩分鐘,忙碌早晨也能烤出外酥內軟的吐司。前者是規格堆疊,後者是生活場景,搜尋引擎讀得懂兩者,消費者只會被後者打動。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>落到實際頁面,結構完整的商品頁通常圍繞幾個互相支撐的角色組合而成。開頭是痛點與定位,用說故事行銷描述誰在什麼情境下需要這個產品解決什麼問題;接著是特色與優點,先講好處(對使用者有什麼意義)再講功能(產品可以做什麼);詳細規格表放尺寸、材質、保固、配送與注意事項,是降低購買不確定感的關鍵;使用情境比較列出系列產品與他牌差異,幫使用者做選擇也建立頁面獨特性;信任訊號如 SGS 檢測、付款安全、清楚退換貨政策,搭配<a href="/eeat-seo-guide/">EEAT</a>原則強化購買信心;FAQ 區塊整理購買前最常見疑問,降低客服負擔同時自然佈局長尾關鍵字。長度沒有絕對標準,但只放幾張圖加幾行規格會被視為內容貧乏,實務上建議至少數百字涵蓋核心與修飾詞,重點在資訊密度而非字數本身,這幾個區塊可依商品性質調整順序,但不建議全部省略。</p><!-- /wp:paragraph --> <!-- wp:heading --><h2 id="sec-5">圖片、影片與真實評論補上不同的缺口</h2><!-- /wp:heading --> <!-- wp:paragraph --><p>圖片、影片和評論各有用處。圖片 SEO 讓商品進 Google 圖片搜尋帶來額外流量,影片透過延長停留時間間接加分,真實評論則是持續更新的原創內容、會自然帶入長尾語句,再搭配 Review Schema 才能在搜尋結果顯示星級。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>搜尋引擎無法像人類一樣直接看懂視覺內容,所以圖片 SEO 本質上是用檔名、ALT 與格式把畫面翻譯成機器讀得到的文字,完整的觀念可參考<a href="/image-seo-optimization/">圖片 SEO 優化指南</a>。檔名要包含關鍵字,不要用 IMG_1234.jpg,改用 sony-wh1000xm5-black.webp 這種具描述性的名稱;ALT 替代文字必填,這是圖片失效或視障人士使用<a href="/wordpress-seo-guide/">螢幕閱讀器</a>時唯一的文字來源;適度壓縮並轉 WebP 格式,用<a href="/image-compression-tools/">圖片壓縮工具</a>在視覺與體積間取平衡,保持高品質視覺的同時大幅縮小檔案體積,WordPress 站可套用<a href="/wordpress-image-optimization/">WordPress 圖片優化步驟</a>;最後要拒絕純圖網頁,把產品描述做成一張長圖對 SEO 極度不友善,搜尋引擎抓不到圖中的文字。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>影片本身不會直接提升排名,這點要先講清楚,避免你花大錢拍完片就等著排名跳上來。它真正的作用是透過使用者行為間接加分,增加停留時間、降低跳出率、加快理解速度,對搜尋引擎來說這是內容品質優良的訊號,這也與<a href="/bounce-rate-seo/">跳出率與 SEO 排名</a>的關係相互呼應。會從影片受益最大的是幾類商品:操作型產品如家電工具需要展示組裝過程,穿戴型商品使用情境不易用文字講清楚,有動態光影或特殊材質的飾品,功能差異需要實際展示的產品;而把相關 YouTube 影片整理成<a href="/seo-youtube-curation-page-seo">YouTube 策展頁</a>也是讓影片流量回流的另一條路。影片的封面、結構化資料、標題描述都要服務於購買決策,不是單純展示。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>評論這一塊,是多數電商最常輕忽的環節。Google 演算法非常看重內容有沒有更新,當商品頁持續有消費者留言,對搜尋引擎來說這代表頁面正持續產出原創且與時俱進的內容,這也正是<a href="/seo-annual-update">內容年度更新</a>想長期維持的鮮度訊號。就算你沒手動修改產品敘述,活躍的評論區也能讓爬蟲認定這是有價值的活動頁面,進而維持或提升權重。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>更實用的是,真實使用者在評論時會自然帶入長尾語句,這些是你寫文案時根本想不到的搜尋情境。這款氣炸鍋放在租屋處的小廚房剛剛好,原本擔心運動時會掉結果跑步超穩,這種口語化的句子覆蓋的正是文案寫不到、卻高轉換的細碎搜尋字詞。評論區本身就是一座免費的<a href="/long-tail-keyword-strategy/">長尾關鍵字</a>礦脈。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>但單純把評論文字放上去是不夠的,必須搭配 Review Schema 結構化資料。當評論資料被正確標記,搜尋結果才有機會顯示黃色星級評分與評論總數,這種視覺上的五星好評讓你的頁面在整排結果中變得顯眼,直接帶動點擊率。評論建立的是信任,結構化資料則是把這份信任顯示在搜尋結果中,兩者缺一不可,而要把這份信任長期累積成品牌資產,<a href="/content-marketing-strategy/">內容行銷策略</a>是最好的框架,<a href="/seo-serpo-skill">用 SEO 為品牌建立信任感</a>則是另一個可以搭配著操作的切入點。</p><!-- /wp:paragraph --> <!-- wp:table --><figure class="wp-block-table"><table><thead><tr><th>元素</th><th>對排名的直接影響</th><th>主要價值</th><th>必做事項</th></tr></thead><tbody><tr><td>圖片</td><td>間接</td><td>進 Google 圖片搜尋</td><td>檔名、ALT、壓縮、WebP</td></tr><tr><td>影片</td><td>間接</td><td>延長停留時間</td><td>封面、Schema、購買決策導向</td></tr><tr><td>評論</td><td>直接且持續</td><td>原創內容與長尾覆蓋</td><td>引導真實留言、Review Schema</td></tr></tbody></table></figure><!-- /wp:table --> <!-- wp:heading --><h2 id="sec-6">結構化資料與技術優化:Product Schema、URL、麵包屑、速度</h2><!-- /wp:heading --> <!-- wp:paragraph --><p>商品頁的技術 SEO 核心是用結構化資料與清晰的網站結構告訴 Google 商品價格、庫存與星級,用簡短含關鍵字的 URL、麵包屑傳遞分類權重,用相關推薦避免孤兒頁,並把載入速度與核心網頁指標顧好。這些設定影響的是點擊率與爬蟲效率,排名保證仍要靠內容與權重來支撐,而要逐頁檢查這些技術項目是否到位,<a href="/seo-tool-screaming-frog">Screaming Frog 這類 SEO 爬蟲工具</a>能一次把整站的標記與連結結構抓出來。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>Product Schema 是這裡面的明星。在後台埋設商品結構化資料,可以直接告訴 Google 這個商品的價格、庫存狀態與星級評分,幫助搜尋引擎正確呈現資訊。當對手的搜尋結果只有標題加描述,而你的結果帶有 2980 元有現貨四顆星,消費者的目光自然被吸引,點擊率立刻拉開差距,而這套讓機器讀懂商品的結構,同時也是<a href="/geo-ai-agentic-browsing">迎接 AI Agent 自動瀏覽網站</a>的基本功。依據 Google Search Central 的結構化資料指南,商品豐富結果正是靠 Product Schema 觸發。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>星級要不要顯示不是標了就會出現。常見的卡點落在幾處:評論數不足、資料標記不完全、資料與頁面實際內容不符,或 Google 判定該網站信任度尚不足以呈現特殊摘要。最致命的是硬標記虛假評論,或標籤內的價格與頁面標示不一致,這可能導致 Google 處罰,甚至直接移除你的結構化資料權限,這類踩線手法本質上就跟<a href="/black-hat-seo-guide">黑帽 SEO</a>沒兩樣,代價遠高於短期收益。Google Search Central 對評論與星級的顯示政策明確把這些條件寫死,屬於硬性規則而非建議。另一種常見錯誤是只標記星級數字卻沒有對應的評論文字,或把整個網站的平均評分套到單一商品上,這兩種做法都會讓結構化資料與頁面內容對不上,觸發 Google 的手動介入風險,短期看起來星級變多,長期卻可能連原本合規的豐富結果一起被收回。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>URL 是搜尋引擎接觸頁面的第一印象,好的商品頁網址要讓使用者一眼知道在賣什麼。它應該包含核心關鍵字,建議用英文命名如 running-shoes/nike-pegasus-40,勝過一串亂碼或 ?p=123,更系統化的命名思維可看<a href="/seo-url-optimization/">SEO 網址優化與命名規則</a>;結構保持簡潔一致,層級盡量控制在三到五層以內;用連字號而非底線,這是搜尋引擎判斷單詞最友善的方式,WordPress 用戶可對照<a href="/wordpress-permalink-seo-setup/">WordPress 永久連結 SEO 設定</a>。結構一旦確定就不要頻繁更動,否則權重會分散。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>麵包屑不只是讓使用者知道我在哪裡的導航,它在 SEO 上的意義是建立內部連結權重。透過麵包屑,搜尋引擎更能看懂首頁大於分類頁大於子分類頁大於商品頁的層級關係,這有助於權重從正確分類傳遞到具體商品,整體的層級規劃可參考<a href="/website-structure-seo-guide/">SEO 友善網站結構規劃</a>。孤兒頁則是相反的麻煩,沒有任何其他頁面連結到的網頁,爬蟲很難發現它,這也牽涉到<a href="/crawl-budget-seo/">爬取預算</a>的運用效率,若頁面內容又是靠 JavaScript 動態渲染才出現,就得額外留意<a href="/seo-javascript-seo">JavaScript SEO</a>的可索引性問題。在頁面下方加入相關商品推薦或搭配購買,把開箱文與教學文導向商品頁,就能把孤兒頁串回網絡。原則很簡單,內部連結必須有關聯且合理控制數量,過多不相關的連結反而分散權重。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>速度這一塊,商品頁常見的效能問題多半是圖片太大、資源太多、伺服器距離太遠累積起來的結果,鮮少出自單一原因,先把<a href="/seo-page-speed">網頁速度對 SEO 的意義</a>弄清楚,才知道要從哪個環節下手。對多數使用者來說,頁面超過幾秒還沒載入完成就開始失去耐心;對搜尋引擎來說,速度與體驗也是評估頁面品質的訊號。把圖片與靜態資源壓縮、非必要資源合併或延後載入、再用<a href="/cdn-website-speed/">CDN</a>讓使用者從最近節點載入,這幾個動作涵蓋大多數情境。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>Lazy Loading 的概念很樸素,先讓使用者看到重要內容,其餘圖片隨捲動再載入,完整做法可看<a href="/lazy-loading-website-performance/">Lazy Loading 延遲載入做法</a>。商品頁特別適合用在商品介紹下方的情境圖、評論區中的使用者圖片、推薦商品或延伸內容區塊。但有兩個底線不能踩,首屏的關鍵圖片不應延遲載入,也不要因為過度延遲導致內容顯示不完整。Lazy Loading 真正服務的是第一次可互動的速度,請求數的增減只是附帶結果。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>核心網頁指標的衡量標的就是使用者實際感受,技術細節圍繞著這個目標展開。商品頁在行動裝置上要特別注意,按鈕是否好按(避免太小或太靠近)、字體是否清楚易讀、頁面載入時是否跳動(避免內容突然位移),更全面的優化思維可參考<a href="/website-speed-optimization-guide/">網站速度優化全攻略</a>。這些細節同時影響 SEO 與轉換率,是商品頁優化裡最容易被略過、卻最直接的成績單。實測數據顯示,頁面載入每多花一點時間,轉換率就會明顯下滑,多數使用者會在數秒內失去耐心,這也是 Google 把<a href="/core-web-vitals-seo/">Core Web Vitals</a>列入排名訊號的原因,web.dev 的效能研究也持續呼應這個結論。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>速度與營收的關聯有實際案例佐證。日本電商 Rakuten 24 在投入優化 Core Web Vitals 之後,每位訪客營收提升 53.37%,轉換率提升 33.13%,對一個以商品頁為營收主體的商店來說,這幾乎等於不做白不做 [來源:web.dev〈Why does speed matter?〉 https://web.dev/articles/why-speed-matters 2026]。商品頁的速度優化因此不只是技術分數的追趕,而是直接換算成可以量化的營收。</p><!-- /wp:paragraph --> <!-- wp:table --><figure class="wp-block-table"><table><thead><tr><th>技術項目</th><th>影響層面</th><th>關鍵設定</th></tr></thead><tbody><tr><td>Product Schema</td><td>點擊率</td><td>標記價格庫存星級,避免硬標記</td></tr><tr><td>URL 結構</td><td>可讀性與權重</td><td>短、含關鍵字、連字號、三到五層</td></tr><tr><td>麵包屑</td><td>內部權重傳遞</td><td>建立首頁到商品頁的層級</td></tr><tr><td>載入速度</td><td>轉換率與體驗</td><td>壓縮、CDN、延遲載入、CWV</td></tr></tbody></table></figure><!-- /wp:table --> <!-- wp:heading --><h2 id="sec-7">商品缺貨、停產、下架時要依頁面價值分流處理</h2><!-- /wp:heading --> <!-- wp:paragraph --><p>商品缺貨、停產或下架時,SEO 成果不會一次歸零,前提是處理方式正確。正確做法是依頁面價值分流,暫時缺貨就保留頁面標示狀態並提供到貨通知,永久停產依流量價值選擇保留引導新款、301 轉到後繼款、或捨棄低價值頁,跨分類重複則用 canonical 指定主版本。處理方式不當,會讓累積的 SEO 成果一次流失;處理得好,反而能保住流量,甚至引導使用者到其他商品。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>暫時缺貨時千萬不要下架或關閉頁面。比較好的做法是保留商品頁維持原有排名與流量,清楚標示缺貨狀態,提供到貨通知功能,並推薦可替代的相似商品,目的是把既有流量轉化為未來的購買機會,讓這份流量繼續留在手上。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>永久停產則依頁面價值選擇做法。保留頁面引導新款,適合仍有穩定長尾流量的熱門型號,頁面可保留產品資訊並引導使用者查看新款或相關商品;301 轉到後繼款或相關分類頁延續權重與流量,是延續 SEO 資產最直接的方式,轉址細節可對照<a href="/301-302-redirect-guide/">301 與 302 轉址教學</a>;捨棄低價值頁面則僅適用於幾乎沒流量、也沒資訊價值的頁面,而且 404 頁面本身也要經過優化,引導使用者到重點頁面或首頁,可參考<a href="/404-page-design/">404 頁面優化找回流失流量</a>,不能放任它變成死胡同。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>跨分類上架本身不會造成重複內容,這個誤解要解開。真正的問題出在兩個地方,一是同一商品被系統產生多個可索引的 URL,二是分類頁之間缺乏清楚定位而導致內容高度相似。這時候 canonical 標籤的角色就是告訴 Google,哪一個 URL 才是主頁面,其他頁面只是輔助入口,更完整的觀念可看<a href="/canonical-url-seo/">Canonical 重複內容解決</a>。設定正確可以避免權重分散,也能降低索引混亂的風險。把 canonical 想成在多個長得很像的頁面裡指定一個正宮,其餘都指向它,權重才會集中而不會被打散。至於新商品上架,順序是關鍵字判斷、結構規劃、內容撰寫、圖片處理、速度檢測、上線檢查,不要一開始就急著放內容塞關鍵字,順序錯了後面很難補。</p><!-- /wp:paragraph --> <!-- wp:table --><figure class="wp-block-table"><table><thead><tr><th>商品狀態</th><th>建議做法</th><th>主要目的</th></tr></thead><tbody><tr><td>暫時缺貨</td><td>保留頁面、標示、到貨通知、推薦替代</td><td>維持排名、轉化未來購買</td></tr><tr><td>永久停產有長尾流量</td><td>保留頁面引導新款,或 301 轉後繼款</td><td>延續權重與流量</td></tr><tr><td>永久停產無流量</td><td>捨棄頁面,404 須優化引導</td><td>清理低價值頁</td></tr><tr><td>跨分類重複 URL</td><td>canonical 指定主版本</td><td>避免權重分散</td></tr></tbody></table></figure><!-- /wp:table --> <!-- wp:heading --><h2 id="sec-8">商品頁 SEO 快速檢查清單與下一步</h2><!-- /wp:heading --> <!-- wp:paragraph --><p>用一份涵蓋權重釐清、關鍵字三層佈局、內容六區塊、多媒體、評論與 Schema、URL 與麵包屑、速度與 CWV、商品狀況處理的檢查清單逐項比對,能把最常被忽略的孤兒頁、重複內容、星級不顯示等問題一次抓出來,再決定哪幾款主力商品值得優先投入。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>權重與結構這一塊,檢查分類頁與商品頁是否互相搶字、是否已用 canonical 與內部連結分清權重、有沒有孤兒頁躲在角落沒被串接,商品頁的版型也可對照<a href="/astra-woocommerce-guide/">Astra Pro WooCommerce 商品頁與分類頁優化</a>。關鍵字與內容檢查標題與描述是否佈局三層關鍵字、內容是否原創且含上述區塊、是否避免直接搬原廠文案;多媒體看圖片是否補 ALT 與壓縮、是否拒絕純圖長圖、影片是否服務購買決策,這幾項要逐頁檢查,搭配<a href="/seo-seo-tools">2026 年 SEO 軟體指南</a>裡介紹的工具會更省力。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>Schema 與評論檢查 Product Schema 與 Review Schema 是否正確標記、評論數是否充足、是否有硬標記虛假評論的風險,Schema 的埋設可借助<a href="/rank-math-seo-tutorial/">Rank Math SEO 外掛教學</a>,星級不顯示多半是評論數不夠或資料不一致,先補真實評論再回頭檢查標記。技術細節看 URL 是否簡短含關鍵字、麵包屑是否建立層級、速度與 CWV 是否過關、商品缺貨停產頁是否正確處理,速度面可搭配<a href="/wordpress-speed-optimization/">WordPress 加速外掛</a>,而商品頁面用的是否為<a href="/best-woocommerce-themes/">最佳 WooCommerce 佈景主題</a>也會影響這些細節的先天條件。這幾塊走完,最常見的失誤基本就清光了。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>下一步只有一個方向,鎖定營收與毛利貢獻最高的那幾款優先商品頁,逐頁套用上面給的順序,並持續累積評論與監測 AI 引用。商品頁 SEO 是一套要長期維護的系統,一次性的專案思維在這裡行不通,評論會累積、商品會上下架、演算法會調整,停在那一次優化就等於讓成果慢慢衰退,而想看到實際數字回饋,<a href="/google-search-console-tips/">Google Search Console 實戰技巧</a>與<a href="/google-ranking-guide">提升 Google 排名關鍵</a>是兩個必備工具。結帳流程的順暢度也會回頭影響轉換,這部分可看<a href="/woocommerce-checkout-customization/">WooCommerce 結帳表單客製化</a>。若還想從更根基的角度打底,<a href="/seo-complete-guide/">SEO 搜尋引擎優化入門</a>與<a href="/off-page-seo-guide/">站外 SEO 與反向連結</a>值得一起納入考量。</p><!-- /wp:paragraph --> <!-- wp:paragraph --><p>AI 引用是接下來幾年最值得投入的方向。當使用者問 Gemini 或 ChatGPT 我住在小套房推薦哪款烤箱,若你的商品頁內文包含體積小、無油煙、是租屋族提升生活品質的首選,AI 更有可能把你的商品頁當成權威來源直接推薦,這也是<a href="/ai-seo-practical-tutorial/">讓 AI 主動引用網站內容心法</a>的核心。這牽涉到<a href="/geo-principles-guide/">GEO 生成式引擎優化</a>與<a href="/aeo-optimization-guide/">AEO 答案引擎優化</a>的觀念,背後的判斷其實很一致,內容對人有用的頁面,機器才會跟著推薦。</p><!-- /wp:paragraph --> <!-- wp:heading --><h2 id="sec-9">常見問題</h2><!-- /wp:heading --> <!-- wp:heading {"level":3} --><h3 id="sec-10">分類頁和商品頁搶同一個關鍵字怎麼辦?</h3><!-- /wp:heading --> <!-- wp:paragraph --><p>用搜尋意圖分流。大字與比較型意圖交給分類頁,含型號、規格、顏色的具體字交給商品頁,必要時用 canonical 與內部連結明確標示主從,讓 Google 知道哪一頁才是主力。</p><!-- /wp:paragraph --> <!-- wp:heading {"level":3} --><h3 id="sec-11">同一個商品不同顏色或尺寸要拆成多個頁面嗎?</h3><!-- /wp:heading --> <!-- wp:paragraph --><p>視規格的搜尋行為而定。顏色、容量這類會被單獨搜尋、又寫得出差異的才值得拆;單純換個尺寸或內容幾乎相同的版本,合併在同一頁用選項呈現,權重會更集中。</p><!-- /wp:paragraph --> <!-- wp:heading {"level":3} --><h3 id="sec-12">商品頁內容要寫多少字才夠?</h3><!-- /wp:heading --> <!-- wp:paragraph --><p>沒有絕對標準,但只放幾張圖加幾行規格會被視為內容貧乏。實務建議至少數百字,涵蓋核心與修飾關鍵字,並補齊痛點定位、規格表、情境比較、FAQ 等區塊,重點是資訊密度而非字數。</p><!-- /wp:paragraph --> <!-- wp:heading {"level":3} --><h3 id="sec-13">商品缺貨時頁面該下架還是保留?</h3><!-- /wp:heading --> <!-- wp:paragraph --><p>暫時缺貨建議保留頁面,標示缺貨狀態、提供到貨通知並推薦替代品,把流量轉成未來購買。永久停產則依流量價值選擇保留引導新款、301 轉到後繼款,或捨棄低價值頁面。</p><!-- /wp:paragraph --> <!-- wp:heading {"level":3} --><h3 id="sec-14">AI 搜尋怎麼引用我的商品頁?</h3><!-- /wp:heading --> <!-- wp:paragraph --><p>讓內容包含明確的情境描述與解決問題的語句,例如適用對象、使用情境與解決的痛點。AI 傾向引用結構清楚、資訊完整且能直接回答問題的頁面,這正是 GEO 與 AEO 的核心,而背後判讀的關鍵其實是<a href="/seo-entity">Entity SEO</a>,把商品相關的人事物梳理清楚,AI 才有素材可以組合引用。</p><!-- /wp:paragraph --> <!-- wp:html --><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "分類頁和商品頁搶同一個關鍵字怎麼辦?", "acceptedAnswer": { "@type": "Answer", "text": "依搜尋意圖分工。大字與比較型意圖由分類頁承接,含型號規格顏色的具體字由商品頁承接,並用 canonical 與內部連結標明主從關係,讓搜尋引擎知道主力頁面是哪一頁。" } }, { "@type": "Question", "name": "同一個商品不同顏色或尺寸要拆成多個頁面嗎?", "acceptedAnswer": { "@type": "Answer", "text": "不一定。只有該規格具備獨立搜尋量,且能為每個版本撰寫實質差異內容時才拆頁。純尺寸差異或內容高度相似的情況,合併成單頁反而能集中權重、避免重複內容。" } }, { "@type": "Question", "name": "商品頁內容要寫多少字才夠?", "acceptedAnswer": { "@type": "Answer", "text": "沒有絕對字數標準,但僅放幾張圖與幾行規格會被判為內容貧乏。建議至少數百字涵蓋核心與修飾關鍵字,並補齊痛點定位、規格表、情境比較與 FAQ 等區塊,重點在資訊密度。" } }, { "@type": "Question", "name": "商品缺貨時頁面該下架還是保留?", "acceptedAnswer": { "@type": "Answer", "text": "暫時缺貨建議保留頁面,清楚標示狀態、提供到貨通知並推薦替代品。永久停產則依流量價值決定,可保留頁面引導新款、301 轉到後繼款延續權重,或捨棄低價值頁面。" } }, { "@type": "Question", "name": "AI 搜尋怎麼引用我的商品頁?", "acceptedAnswer": { "@type": "Answer", "text": "在內容中加入明確的情境描述、適用對象與解決痛點的語句,讓 AI 能直接擷取並組合。結構清楚、資訊完整且能回答具體問題的商品頁,最容易被生成式 AI 當成權威來源引用。" } } ] } </script><!-- /wp:html --> </div> <!-- Sticky TOC (desktop only) --> <aside class="hidden lg:block"> <nav class="sticky top-20 max-h-[calc(100vh-6rem)] overflow-y-auto pr-2" aria-label="本頁目錄"> <p class="text-xs font-bold tracking-wider text-faint uppercase mb-3">目錄</p> <ul id="toc" class="space-y-1.5 border-l border-line"> <li> <a href="#sec-0" data-toc="sec-0" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> WooCommerce 商品頁 SEO:從權重釐清到被 Google 與 AI 同時推薦 </a> </li><li> <a href="#sec-1" data-toc="sec-1" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 商品頁 SEO 的本質:一頁同時滿足三種讀者 </a> </li><li> <a href="#sec-2" data-toc="sec-2" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 動手前先釐清權重、拆頁與優先順序 </a> </li><li> <a href="#sec-3" data-toc="sec-3" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 交易型關鍵字佈局:一個商品頁同時吃三層流量 </a> </li><li> <a href="#sec-4" data-toc="sec-4" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 內容厚度:從規格搬運工到原創情境 </a> </li><li> <a href="#sec-5" data-toc="sec-5" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 圖片、影片與真實評論補上不同的缺口 </a> </li><li> <a href="#sec-6" data-toc="sec-6" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 結構化資料與技術優化:Product Schema、URL、麵包屑、速度 </a> </li><li> <a href="#sec-7" data-toc="sec-7" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 商品缺貨、停產、下架時要依頁面價值分流處理 </a> </li><li> <a href="#sec-8" data-toc="sec-8" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 商品頁 SEO 快速檢查清單與下一步 </a> </li><li> <a href="#sec-9" data-toc="sec-9" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors "> 常見問題 </a> </li><li> <a href="#sec-10" data-toc="sec-10" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors pl-6"> 分類頁和商品頁搶同一個關鍵字怎麼辦? </a> </li><li> <a href="#sec-11" data-toc="sec-11" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors pl-6"> 同一個商品不同顏色或尺寸要拆成多個頁面嗎? </a> </li><li> <a href="#sec-12" data-toc="sec-12" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors pl-6"> 商品頁內容要寫多少字才夠? </a> </li><li> <a href="#sec-13" data-toc="sec-13" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors pl-6"> 商品缺貨時頁面該下架還是保留? </a> </li><li> <a href="#sec-14" data-toc="sec-14" class="toc-link block border-l-2 -ml-px px-3 py-1 text-sm text-muted hover:text-accent-strong hover:border-accent transition-colors pl-6"> AI 搜尋怎麼引用我的商品頁? </a> </li> </ul> </nav> </aside> </div> <!-- Prev / Next --> <nav class="mx-auto max-w-3xl px-4 sm:px-6 py-6 grid gap-3 sm:grid-cols-2 border-t border-line mt-4" aria-label="上下篇"> <a href="/white-black-grey-hat-seo" class="group rounded-lg border border-line px-4 py-3 hover:border-accent transition-colors"> <span class="block text-xs text-faint mb-1">← 上一篇</span> <span class="text-sm font-medium text-ink group-hover:text-accent-strong">白帽、黑帽、灰帽 SEO 完整解析:搞懂三種手法的風險與正確選擇</span> </a> <a href="/wordpress-permalink-seo-setup" class="group rounded-lg border border-line px-4 py-3 hover:border-accent transition-colors sm:text-right"> <span class="block text-xs text-faint mb-1">下一篇 →</span> <span class="text-sm font-medium text-ink group-hover:text-accent-strong">WordPress 永久連結設定教學:SEO 最佳結構+WooCommerce 網址優化完整指南</span> </a> </nav> <!-- Related --> <section class="mx-auto max-w-3xl px-4 sm:px-6 pb-16" aria-label="相關文章"> <h2 class="text-sm font-bold tracking-wider text-faint uppercase mb-4">相關文章</h2> <ul class="grid gap-3"> <li> <a href="/marketing-100-online-marketing" class="group flex items-baseline justify-between gap-3 rounded-lg border border-line px-4 py-3 hover:border-accent hover:bg-accent-soft transition-colors"> <span class="text-ink font-medium group-hover:text-accent-strong">2025 年網路行銷大全:100+ 種網路行銷方法 | 白話文商學院</span> <span class="text-xs text-faint shrink-0">行銷</span> </a> </li><li> <a href="/ai-chatgpt-shoping" class="group flex items-baseline justify-between gap-3 rounded-lg border border-line px-4 py-3 hover:border-accent hover:bg-accent-soft transition-colors"> <span class="text-ink font-medium group-hover:text-accent-strong">BEO(購買引擎優化)與 ChatGPT 購物:讓對話變成新貨架</span> <span class="text-xs text-faint shrink-0">AI 工具</span> </a> </li><li> <a href="/seo-seo-tools" class="group flex items-baseline justify-between gap-3 rounded-lg border border-line px-4 py-3 hover:border-accent hover:bg-accent-soft transition-colors"> <span class="text-ink font-medium group-hover:text-accent-strong">2026 年 SEO 軟體指南:超過 31 個 SEO 工具、SEO 軟體推薦</span> <span class="text-xs text-faint shrink-0">AI 工具</span> </a> </li><li> <a href="/seo-build-website" class="group flex items-baseline justify-between gap-3 rounded-lg border border-line px-4 py-3 hover:border-accent hover:bg-accent-soft transition-colors"> <span class="text-ink font-medium group-hover:text-accent-strong">2026 新手網站推薦大全:新手的 14 個網站平台推薦</span> <span class="text-xs text-faint shrink-0">AI 工具</span> </a> </li> </ul> </section> </article> <script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"WooCommerce 商品頁 SEO 優化完全手冊:關鍵字佈局、內容策略到結構化資料,全面提升排名與轉換","description":"商品頁 SEO 怎麼做,第一動是把產品名稱塞滿標題這件事先擺一邊,先釐清這一頁要承接哪一種搜尋意圖、內容厚度夠不夠、結構化資料有沒有讓機器讀懂。這是整體站內 SEO 在商品頁這個場…","articleSection":"SEO","inLanguage":"zh-Hant-TW","url":"https://whoops.tw/woocommerce-product-page-seo","author":{"@type":"Organization","name":"whoops.tw"},"publisher":{"@type":"Organization","name":"whoops.tw","url":"https://whoops.tw"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://whoops.tw/woocommerce-product-page-seo"}}</script> <script> (function () { var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; var bar = document.getElementById('progress'); var headings = document.querySelectorAll('[id^="sec-"]'); var tocLinks = document.querySelectorAll('.toc-link'); // Reading progress function onScroll() { if (bar) { var h = document.documentElement; var scrolled = h.scrollTop / (h.scrollHeight - h.clientHeight || 1); bar.style.width = Math.min(100, Math.max(0, scrolled * 100)) + '%'; } } onScroll(); window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll, { passive: true }); // TOC scroll-spy (skip under reduced motion) if (!reduce && headings.length && tocLinks.length && 'IntersectionObserver' in window) { var byId = {}; tocLinks.forEach(function (l) { byId[l.dataset.toc] = l; }); var io = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { tocLinks.forEach(function (l) { l.classList.remove('text-accent-strong', 'border-accent', 'font-medium'); l.classList.add('text-muted'); }); var active = byId[e.target.id]; if (active) { active.classList.remove('text-muted'); active.classList.add('text-accent-strong', 'border-accent', 'font-medium'); } } }); }, { rootMargin: '-20% 0px -70% 0px' }); headings.forEach(function (h) { io.observe(h); }); } })(); </script> </main> <footer class="border-t border-line bg-tint mt-20"> <div class="mx-auto max-w-6xl px-4 sm:px-6 py-12 grid gap-10 md:grid-cols-[1.4fr_1fr_1fr]"> <div> <div class="flex items-center gap-2 font-bold text-ink mb-3"> <span class="inline-flex items-center justify-center h-7 w-7 rounded-md bg-accent text-white text-sm font-black">W</span> <span>whoops<span class="text-accent">.tw</span></span> </div> <p class="text-sm text-muted leading-relaxed max-w-sm"> SEO、GEO、網頁設計的繁體中文知識站。把搜尋引擎與 AI 引用背後的邏輯,寫成你能直接動手做的實戰內容。 </p> </div> <div> <h3 class="text-xs font-bold tracking-wider text-faint uppercase mb-3">分類</h3> <ul class="space-y-2 text-sm"> <li><a href="/category/%E8%A1%8C%E9%8A%B7" class="text-muted hover:text-accent">行銷 <span class="text-faint">· 151</span></a></li><li><a href="/category/AI%20%E5%B7%A5%E5%85%B7" class="text-muted hover:text-accent">AI 工具 <span class="text-faint">· 131</span></a></li><li><a href="/category/SEO" class="text-muted hover:text-accent">SEO <span class="text-faint">· 124</span></a></li><li><a href="/category/%E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88" class="text-muted hover:text-accent">網頁設計 <span class="text-faint">· 90</span></a></li><li><a href="/category/WordPress%20%E5%A4%96%E6%8E%9B" class="text-muted hover:text-accent">WordPress 外掛 <span class="text-faint">· 52</span></a></li><li><a href="/category/WooCommerce" class="text-muted hover:text-accent">WooCommerce <span class="text-faint">· 38</span></a></li><li><a href="/category/WordPress" class="text-muted hover:text-accent">WordPress <span class="text-faint">· 38</span></a></li> </ul> </div> <div> <h3 class="text-xs font-bold tracking-wider text-faint uppercase mb-3">站內</h3> <ul class="space-y-2 text-sm"> <li><a href="/articles" class="text-muted hover:text-accent">全部文章</a></li> <li><a href="/search" class="text-muted hover:text-accent">搜尋</a></li> <li><a href="/services" class="text-muted hover:text-accent">諮詢服務</a></li> <li><a href="/about" class="text-muted hover:text-accent">關於</a></li> <li><a href="/contact" class="text-muted hover:text-accent">聯絡</a></li> </ul> </div> </div> <div class="border-t border-line"> <div class="mx-auto max-w-6xl px-4 sm:px-6 py-4 flex flex-col sm:flex-row items-center justify-between gap-2 text-xs text-faint"> <p>© 2026 whoops.tw · 754 篇內容</p> <p>繁體中文 · Taiwan</p> </div> </div> </footer> <!-- Scroll reveal: fade+rise any [data-reveal] into view. Reduced-motion safe. --> <script> (function () { if (!('IntersectionObserver' in window)) return; var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; var els = document.querySelectorAll('[data-reveal]'); if (reduce || !els.length) { els.forEach(function (e) { e.classList.add('is-visible'); }); return; } var io = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { entry.target.classList.add('is-visible'); io.unobserve(entry.target); } }); }, { rootMargin: '0px 0px -8% 0px', threshold: 0.04 }); els.forEach(function (e) { io.observe(e); }); })(); </script> </body> </html>