افزودن تماس بگیرید به جای قیمت ووکامرس

مسعود قربان خانی

مدرس : مسعود قربان خانی

فایل های ضروری و مورد نیاز

تخفیف ویژه دانشجویان دوره رایگان ووکامرس

علاوه بر تخفیف همیشگی المنتور پرو 20% بیشتر تخفیف بگیرید

کد تخفیف : off-elementor

در این نوشته شما می خوانید

افزودن تماس بگیرید به جای قیمت ووکامرس

در این آموزش میخواهیم در ووکامرس کاری کنیم که اگر قیمت صفر گذاشتیم تماس بگیرید به جای قیمت ووکامرس نمایش داده شود یعنی اگر قیمت صفر بود به جای اینکه عدد صفر را نمایش دهد متن دلخواه نمایش دهد .

برای اینکار کافیه کد زیر را کپی نمایید و در قسمت پیشخوان > نمایش > ویرایشگر پرونده پوسته در انتهای فایل functions.php قرار دهید .

کد افزودن تماس بگیرید به جای قیمت ووکامرس

				
					add_filter( 'woocommerce_get_price_html', 'wooc_price_free_zero_empty', 9999, 2 );
function wooc_price_free_zero_empty( $price, $product ) {
    // بررسی برای محصولات متغیر
    if ( $product->is_type( 'variable' ) ) {
        $min_price = $product->get_variation_price( 'min' );
        $max_price = $product->get_variation_price( 'max' );
        
        if ( $min_price == 0 || $max_price == 0 ) {
            $price = '<span style="background-color: #da001c;color: white;padding: 10px 20px;border-radius: 5px;font-weight: bold;">تماس بگیرید</span>';
            // غیرفعال کردن دکمه افزودن به سبد خرید
            remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
        }
    } else {
        // برای محصولات ساده
        if ( '' === $product->get_price() || 0 == $product->get_price() ) {
            $price = '<span style="background-color: #da001c;color: white;padding: 10px 20px;border-radius: 5px;font-weight: bold;">تماس بگیرید</span>';
            // غیرفعال کردن دکمه افزودن به سبد خرید
            remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
        }
    }
    return $price;
}

add_filter('woocommerce_is_purchasable', 'disable_add_to_cart_for_free_products', 10, 2);
function disable_add_to_cart_for_free_products($purchasable, $product) {
    // بررسی برای محصولات متغیر
    if ( $product->is_type( 'variable' ) ) {
        $min_price = $product->get_variation_price( 'min' );
        $max_price = $product->get_variation_price( 'max' );
        
        if ( $min_price == 0 || $max_price == 0 ) {
            return false; // غیرفعال کردن امکان خرید
        }
    } else {
        if ($product->get_price() == 0 || $product->get_price() === '') {
            return false; // غیرفعال کردن امکان خرید برای محصولات ساده
        }
    }
    return $purchasable;
}
				
			

در کد میتوانید تماس بگیرید را پیدا کنید و متن دلخواه خودتان را قرار دهید

آنالیز این کد

  • فیلتر woocommerce_get_price_html

    • اگر قیمت محصول (ساده یا متغیر) صفر باشد، متن “تماس بگیرید” جایگزین قیمت می‌شود.
    • برای محصولات متغیر، اگر حداقل یا حداکثر قیمت صفر باشد، این متن نمایش داده می‌شود.
  • فیلتر woocommerce_is_purchasable

    • اگر قیمت محصول صفر باشد، خرید آن را غیرفعال می‌کند.
    • برای محصولات متغیر، اگر کمترین یا بیشترین قیمت صفر باشد، امکان خرید غیرفعال می‌شود.

4 پاسخ

  1. سلام و احترام من با این که این کد و ده بار تاحالا استفاده کردم ولی متاسفانه این سری کار نکرد مشکل از کجاس؟

    1. سلام خدمت شما
      این کد از نظر ساختار کلی صحیح است
      مشکل از خود کد نیست معمولاً این اتفاق به‌دلیل تداخل با قالب یا افزونه‌ها، تغییرات نسخه ووکامرس، کش سایت، یا اورراید شدن فایل‌های قالب رخ می‌دهد
      همچنین اگر از المنتور یا قالب‌های سفارشی برای نمایش محصول استفاده می‌کنید، ممکن است فیلترها و هوک‌های ووکامرس اجرا نشوند
      پیشنهاد می‌کنم ابتدا خطای PHP را بررسی کنید، کش را پاک کنید، با قالب پیش‌فرض ووکامرس تست بگیرید

  2. سلام وقت بخیر
    من این کار را انجام دادم ولی متن تماس بگیرید اضافه نشد
    چه کنم؟

    1. سلام خدمت شما
      کافیه فقط از فیلتر woocommerce_is_purchasable برای غیرفعال کردن خرید و woocommerce_get_price_html برای نمایش تماس بگیرید استفاده کنید و remove_action رو حذف کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *