مخفی کردن قیمت از کاربران مهمان یک استراتژی عالی برای ترغیب کاربران به ثبت‌نام و همچنین شخصی‌سازی فروش در شرایط خاص است. برای این کار یک کد کوچک نیاز دارید:

استفاده از کد (بدون نیاز به افزونه)


این روش بهینه‌ترین حالت برای سرعت سایت است، چون هیچ پردازش اضافه‌ای به وردپرس تحمیل نمی‌کند. کافی است کد زیر را به انتهای فایل functions.php قالب خود اضافه کنید:

/**
 * مخفی کردن قیمت و دکمه خرید برای کاربران مهمان
 */
add_action('init', 'farjad_hide_price_guest_users');

function farjad_hide_price_guest_users() {
    if ( !is_user_logged_in() ) {
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
        
        // نمایش پیام جایگزین
        add_filter( 'woocommerce_get_price_html', 'farjad_login_to_see_price_text' );
    }
}

function farjad_login_to_see_price_text( $price ) {
    return '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '" style="color: #e91e63;">برای مشاهده قیمت و خرید، وارد شوید</a>';
}

نکات مهم برای تجربه کاربری بهتر
دکمه خرید
را فراموش نکنید: در کد بالا، دکمه خرید هم مخفی شده است؛ چون اگر کاربر قیمت را نبیند اما بتواند محصول را به سبد خرید اضافه کند، در مرحله تسویه‌حساب دچار سردرگمی می‌شود.

کش سایت (Cache): اگر از افزونه‌های کش مثل WP Rocket یا LiteSpeed استفاده می‌کنید، حتماً بعد از اعمال کد، کش سایت را خالی کنید. در برخی تنظیمات سخت‌گیرانه کش، ممکن است کاربر لاگین شده همچنان نسخه کش‌شده (بدون قیمت) را ببیند.

صفحه حساب کاربری: اطمینان حاصل کنید که لینک «وارد شوید» کاربران را به صفحه درستی هدایت می‌کند تا نرخ تبدیل سایت شما آسیب نبیند.