跳到內容

商品價格消失,最後發現 CSS scope 太大

整理日期:2026-03-23

有幾個商品頁在選擇規格後,價格區塊沒有正常顯示。

同一批調整裡,課程列表和單一商品頁的 YITH Badge 也有壓到圖片的狀況。

這種問題很容易被看成 WooCommerce 或變體商品設定錯誤。但如果多個商品頁同時發生,通常要先懷疑共用模板或全站 CSS。

我會先拆成幾層:

  • 價格資料是否真的沒有輸出。
  • 價格有輸出,但被 CSS 隱藏。
  • 被隱藏的是單一頁面,還是所有套用同一個模板的頁面。
  • CSS 是寫在佈景主題、Additional CSS、WPCodeBox,還是頁面編輯器裡。
  • Badge 是定位錯,還是圖片區塊沒有預留空間。

先不要急著重設商品規格。只要 HTML 裡其實有價格,方向就不是商品資料。

價格消失的原因是自訂 CSS 直接用 Elementor 的元素 ID 隱藏價格區塊。

原本目標只是隱藏某一個特殊商品頁的價格,但那兩個 Elementor 元素 ID 其實來自共用產品頁模板。

也就是說,只要使用同一個模板,全部商品頁都會被影響。

Badge 壓圖則是另一個問題。YITH Badge 是絕對定位,原本想透過改 WooCommerce 內部圖片元素的 overflowdisplay 來處理,但這種做法容易干擾 WooCommerce 原本的版面和變體顯示。

價格區塊的 CSS 要加上頁面範圍。

概念像這樣:

.postid-XXXXX .elementor-element-AAAA,
.postid-XXXXX .elementor-element-BBBB {
display: none !important;
}

不要只寫:

.elementor-element-AAAA,
.elementor-element-BBBB {
display: none !important;
}

Badge 的處理則改成在外層容器預留空間,不動 WooCommerce 內層圖片元素。

比較穩的方向是:

.container-image-and-badge {
padding-top: 25px;
}
.container-image-and-badge .yith-wcbm-badge {
position: absolute !important;
top: 0 !important;
left: 0 !important;
z-index: 10;
}

重點不是這個數值一定正確,而是不要為了解決 badge 壓圖,去改 WooCommerce 內部結構。

不要一看到價格不見,就先重建商品或重裝 WooCommerce。

也不要直接用 Elementor 元素 ID 寫全站隱藏。Elementor 模板裡的元素 ID 不一定只屬於單一頁面。

如果真的要針對某一頁,至少用 body 上的頁面 class 限定範圍。

  • 哪些商品頁受影響。
  • 選規格後 HTML 裡是否有價格。
  • 價格元素是不是被 display: nonevisibility: hidden 隱藏。
  • 目前套用哪個 Elementor / WooCommerce 模板。
  • 自訂 CSS 寫在哪裡。
  • Badge 的定位參考容器是哪一層。

這類問題通常不是單一外掛壞掉,而是模板共用和 CSS 範圍沒有切乾淨。

  • WooCommerce
  • Elementor
  • WPCodeBox
  • YITH Badge
  • CSS scope
  • 商品頁