WooCommerce 如何將「查看購物車」文字改為「查看詢價車」?

WooCommerce 轉詢價系統常見的文字不一致問題

當我們將 WooCommerce 改造成 B2B 詢價系統時,最常遇到的症狀就是介面語法對不上業務流程。雖然可以透過 Loco Translate 修改靜態翻譯,但 WooCommerce 的「查看購物車」連結(.added_to_cart)是透過 AJAX 加入商品後動態產生的,這類由腳本觸發的元件往往會跳過標準的翻譯處理流程,導致頁面出現「加入詢價」按鈕旁卻彈出「查看購物車」的尷尬情況。

為什麼不能只用一般的 PHP Hook 修改?

在 WordPress 佈景主題的 functions.php 中使用 gettext 濾鏡雖然能修改大部分文字,但對於非同步加載(AJAX)生成的內容,PHP 程式碼在頁面初始化後就已經結束執行。為了確保按鈕在任何時間點出現都能被正確替換,使用 JavaScript 監聽 DOM 變化是更直接且輕量化的解法。

實作程式碼

<script>
document.addEventListener('DOMContentLoaded', function () {
    // 確認當前語言為繁體或簡體中文
    if (document.documentElement.lang.startsWith('zh')) {
        function replaceCartText() {
            const links = document.querySelectorAll('.added_to_cart.wc-forward');
            links.forEach(function (link) {
                if (link.textContent.trim() === '查看購物車') {
                    link.textContent = '查看詢價車';
                    link.setAttribute('title', '查看詢價車');
                }
            });
        }

        // 頁面加載時先執行一次
        replaceCartText();

        // 監控 DOM 是否有動態新增元件
        const observer = new MutationObserver(replaceCartText);
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }
});
</script>

邏輯拆解與設定重點

  • 多國語言判斷:透過 document.documentElement.lang.startsWith('zh') 判斷,確保只在中文語系環境執行,避免影響英文版的 View Cart 文字。
  • 精準選取器:鎖定 .added_to_cart.wc-forward 類別,這是 WooCommerce 標準的「已加入後出現的按鈕」選取器,不會誤傷到選單列或其他區塊。
  • MutationObserver 監控機制:這是本實作的核心。它會持續監聽網頁內部的節點變化,一旦偵測到使用者點擊「加入詢價」並由 AJAX 產生新按鈕時,會立即觸發取代函式。
  • 屬性同步更新:除了 textContent 文字內容外,同時更新 title 屬性,確保滑鼠懸停時顯示的文字與按鈕一致。

實務踩坑提醒與注意事項

在實作過程中,有幾點細節建議特別注意:

  1. 效能平衡:MutationObserver 雖然強大,但過度頻繁的 DOM 掃描會影響瀏覽效能。本段 code 僅針對特定 class 進行處理,對效能影響極低。
  2. 文字對齊link.textContent.trim() === '查看購物車' 必須與你當前網站顯示的原文完全一致。若網站安裝了自訂翻譯外掛,請務必確認該字串是否包含空格或標點符號。
  3. 快取影響:若網站有使用 WP Rocket 或 Autoptimize 等縮減(Minify)工具,請確認 JavaScript 載入順序,建議將此段腳本放在頁尾(Footer)執行。

看不懂沒關係,照做就能用

以上的原理看不懂沒關係,只要照著下面的步驟操作就能直接套用:

操作步驟

  1. 前往 WordPress 後台,安裝並啟用「FluentSnippets」外掛
  2. 點擊左側選單的「FluentSnippets」,並點擊「Add New Snippet」
  3. 選擇「JavaScript」類型,並將文章中的 JavaScript 程式碼完整貼入編輯區域
  4. 在右側設定欄位的執行位置(Execution Location)選擇「Site Wide Footer」
  5. 點擊儲存並將狀態切換為「Enabled」
  6. 如果網站有安裝任何快取外掛(如 WP Rocket、LiteSpeed Cache),請務必執行一次「清除所有快取」
  7. 前往前台商品頁面,點擊「加入詢價」按鈕,確認彈出的連結是否已正確顯示為「查看詢價車」
如果啟用後網站出現異常,回到 Snippets 將該片段停用即可立刻復原,不會影響其他設定。

文章分享