在 WordPress 中,如果 WooCommerce 的購物車圖標在管理員登入狀態下正常,但在訪客模式下顯示異常,這可能是由以下原因導致的:
常見原因
- 緩存問題
如果使用了網站緩存插件(如 WP Super Cache、W3 Total Cache)或伺服器端的緩存功能,可能導致訪客看到緩存頁面,無法即時刷新購物車狀態。 - JavaScript 衝突
主題或其他插件的 JavaScript 代碼可能與 WooCommerce 的購物車功能衝突,影響購物車的正確顯示。 - AJAX 未正確配置
WooCommerce 購物車圖標依賴於 AJAX 加載更新。如果主題或插件未正確加載相關 AJAX 請求,訪客模式下可能無法顯示正確的內容。 - 權限問題
某些主題可能限制了非登錄用戶訪問特定功能或代碼。
解決方法
1. 檢查並排除緩存問題
- 清除緩存:清空所有緩存,包括:
- WordPress 緩存插件(如 WP Super Cache)。
- CDN 緩存(如 Cloudflare)。
- 主機服務商的緩存(如 LiteSpeed Cache)。
- 排除購物車頁面緩存:
- 在緩存插件中,將購物車、結帳和我的帳戶頁面排除在緩存之外。
- 常見 URL 排除:
/cart/
/checkout/
/my-account/
2. 檢查主題設置
- 如果使用自訂主題,進入 WooCommerce > 狀態 > 系統狀態報告,檢查是否有模板文件過期或被覆蓋。
- 更新主題到最新版本。
- 測試更換到 官方 WooCommerce 主題(如 Storefront),觀察問題是否依然存在。
3. 檢查插件衝突
- 停用所有插件(除了 WooCommerce),然後逐一啟用來檢查是否有衝突。
- 測試停用緩存和優化插件(如 Autoptimize、WP Rocket)。
4. 檢查 AJAX 加載
- 確保網站正確啟用了 AJAX 請求:
- 在 WordPress 的
functions.php
文件中,確認是否有以下代碼:add_action('wp_ajax_nopriv_update_mini_cart', 'woocommerce_header_add_to_cart_fragment');
- 測試購物車圖標是否在 AJAX 加載後正常更新。
- 在 WordPress 的
5. 檢查 JavaScript 問題
- 使用瀏覽器開發工具(F12 或右鍵 “檢查”),檢查控制台(Console)是否有報錯。
- 如果有錯誤,檢查是來自哪個插件或主題,並嘗試停用相關插件進行排查。
6. 添加自訂代碼(重新載入購物車碎片)
- 如果以上方法無效,可以嘗試手動更新購物車的 AJAX 碎片。將以下代碼添加到主題的
functions.php
文件:add_filter('woocommerce_add_to_cart_fragments', 'custom_wc_refresh_mini_cart'); function custom_wc_refresh_mini_cart($fragments) { ob_start(); woocommerce_mini_cart(); $fragments['div.widget_shopping_cart_content'] = ob_get_clean(); return $fragments; }
總結
以上方法應能解決 WooCommerce 購物車圖標在訪客模式下顯示異常的問題。
如果問題依然存在,建議:
- 聯繫主題或插件開發者。
- 使用開發工具檢查更深入的錯誤。
請訪問我的YouTube頻道:Creative Web Dev,查看更多優質內容。
在查看完此文章的同時,您會發現以下資源也很有用:
✅如何順利轉移網站域名到另一個服務供應商?
✅如何免費申請D-U-N-S鄧白氏編碼?
✅如何使用D-U-N-S編號註冊Google的公司開發者賬號?
✅如何搭建 URL 短鏈接平台?
✅如何把網站封裝成 App 並上架 Google 和 Apple?
✅如何創建多語言外貿獨立站?
✅4 個最流行的WordPress免費主題
如果您喜歡這篇文章,請訂閱我的網站,您將會收到最新的資源分享信息。您還可以在YouTube和小紅書上找到我。