要在 WooCommerce 中對未登入的用戶顯示未折扣的價格,可以透過添加自定程式碼到的 WordPress 網站來實現這一功能。這個解決方案涉及到修改產品價格的顯示邏輯,使其根據用戶的登入狀態來調整。
可以參考以下程式碼,說明如何隱藏折扣後的價格並僅對未登入的用戶顯示原價。你可以將這段代碼添加到佈景主題的 functions.php
文件或透過使用外掛添加程式碼來實現。
function custom_price_for_guests_only($price, $product) { // 檢查用戶是否未登入 if (!is_user_logged_in()) { // 使用產品的正常價格 $regular_price = wc_get_price_to_display($product, array('price' => $product->get_regular_price())); return wc_price($regular_price); } // 對於已登入用戶,顯示原始價格(包括任何折扣) return $price; } add_filter('woocommerce_get_price_html', 'custom_price_for_guests_only', 10, 2); add_filter('woocommerce_cart_item_price', 'custom_price_for_guests_only', 10, 2);
這段程式碼的原理如下:
- 使用 WooCommerce 的
woocommerce_get_price_html
和woocommerce_cart_item_price
過濾器,這兩個過濾器分別用於修改產品頁面上的價格顯示和購物車內的產品價格顯示。 - 在自定函數
custom_price_for_guests_only
內部,首先檢查當前用戶是否未登入。 - 對於未登入的用戶,函數計算產品的正常(未折扣)價格並使用
wc_price()
函數來格式化它,然後返回這個價格以便顯示。 - 對於已登入的用戶,直接顯示原始價格(可能包括折扣)。
請注意,這個解決方案假設折扣價格是透過 WooCommerce 的標準方式設置的(例如,設置了銷售價格)。如果你的網站使用了特殊的定價外掛或有其他克制化的價格邏輯,可能需要進行額外的調整以確保與這些自定程式可以相容。