تخطَّ إلى المحتوى

أكواد تطوير الوردبريس

إخفاء الأسعار وزر الشراء عن غير المسجلين في ووكومرس (متاجر الجملة)

قراءة في 3 دقائق

إخفاء الأسعار وزر الشراء عن غير المسجلين في ووكومرس (متاجر الجملة)

تجّار الجملة والموزّعون والشركات التي تبيع لعملاء معتمدين فقط لا يريدون أسعارهم علنية. ووكومرس لا يوفّر هذا الخيار افتراضيًا، والإضافات المخصصة له مدفوعة غالبًا. الكود التالي يفعلها في دقائق ويتيح لك تخصيص الرسالة والدور المسموح.

ماذا سيحدث للزائر غير المسجّل؟

  • يختفي السعر في صفحة المنتج وشبكة المتجر والبحث.
  • يختفي زر «أضف إلى السلة» ويظهر بدلًا منه: «سجّل الدخول لعرض الأسعار» برابط لصفحة الدخول.
  • لو حاول إضافة منتج عبر رابط مباشر، تُرفض العملية برسالة.
  • المسجّلون (أو دور محدد مثل «تاجر جملة») يرون كل شيء طبيعيًا.

الكود

php
/**
 * إخفاء الأسعار وزر الشراء عن غير المسجّلين — ووكومرس
 * يوضع في functions.php للقالب الابن
 */

// من يحق له رؤية الأسعار؟ عدّل هنا: 'any' لأي مسجّل، أو اسم دور مثل 'wholesale'
function mirror_can_see_prices() {
    $allowed_role = 'any';

    if ( ! is_user_logged_in() ) {
        return false;
    }
    if ( 'any' === $allowed_role ) {
        return true;
    }
    $user = wp_get_current_user();
    return in_array( $allowed_role, (array) $user->roles, true ) || current_user_can( 'manage_options' );
}

// 1) استبدال السعر برسالة
add_filter( 'woocommerce_get_price_html', function ( $price, $product ) {
    if ( mirror_can_see_prices() ) {
        return $price;
    }
    $login = wp_login_url( get_permalink( $product->get_id() ) );
    return '<a class="mirror-login-to-see" href="' . esc_url( $login ) . '">سجّل الدخول لعرض السعر</a>';
}, 10, 2 );

// 2) منع الشراء (يخفي زر السلة في صفحة المنتج والشبكة)
add_filter( 'woocommerce_is_purchasable', function ( $purchasable, $product ) {
    return mirror_can_see_prices() ? $purchasable : false;
}, 10, 2 );

// 3) إزالة زر "أضف للسلة" من شبكة المتجر نهائيًا للزوّار
add_action( 'init', function () {
    if ( ! mirror_can_see_prices() ) {
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    }
} );

// 4) حماية إضافية: رفض الإضافة للسلة عبر أي طريقة
add_filter( 'woocommerce_add_to_cart_validation', function ( $passed ) {
    if ( ! mirror_can_see_prices() ) {
        wc_add_notice( 'الأسعار والشراء متاحان للعملاء المسجّلين فقط.', 'error' );
        return false;
    }
    return $passed;
} );

// 5) تنسيق بسيط للرسالة
add_action( 'wp_head', function () {
    if ( mirror_can_see_prices() ) {
        return;
    }
    echo '<style>.mirror-login-to-see{display:inline-block;background:#eff6ff;color:#2563eb;font-weight:700;padding:6px 14px;border-radius:999px;font-size:14px;text-decoration:none}</style>';
} );

شرح النقاط المهمة

  • woocommerce_get_price_html: الفلتر الوحيد الذي يغطّي السعر في كل مكان (صفحة المنتج، الشبكة، الودجات، البحث).
  • woocommerce_is_purchasable: جعل المنتج غير قابل للشراء يخفي زر السلة تلقائيًا في القوالب الملتزمة بمعايير ووكومرس.
  • التحقق عند الإضافة: ضروري لأن إخفاء الزر لا يمنع من يعرف رابط ?add-to-cart=ID.
  • الدور المخصص: غيّر $allowed_role إلى 'wholesale' وأنشئ الدور بإضافة Members أو بسطر add_role().

إنشاء دور «تاجر جملة» بسطر واحد

php
// ينفَّذ مرة واحدة ثم يُحذف (الأدوار تُحفظ في قاعدة البيانات)
add_action( 'init', function () {
    if ( ! get_role( 'wholesale' ) ) {
        add_role( 'wholesale', 'تاجر جملة', get_role( 'customer' )->capabilities );
    }
} );

حالات استخدام

🏭

موزّع جملة

الأسعار للتجار المعتمدين فقط بعد مراجعة يدوية للحساب.

🏢

مورّد للشركات (B2B)

كتالوج عام، أسعار وطلبات للعملاء التعاقديين.

🎓

أسعار أعضاء

أسعار خاصة لأعضاء نادٍ أو جمعية أو مشتركي باقة.

أسعار مختلفة لكل مجموعة؟لو تحتاج سعر تجزئة للزوّار وسعر جملة للتجار في نفس المنتج، فهذا يحتاج فلترة السعر نفسه لا إخفاءه. تواصل معنا ونبني لك قواعد تسعير حسب الدور والكمية.

متجر جملة متكامل

تسجيل تجّار بمراجعة يدوية، أسعار حسب الدور والكمية، حد أدنى للطلب، وفواتير ضريبية — نبنيه لك على ووكومرس.

اطلب متجر الجملة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *