اسنیپت نمایش ناموجود در محصولات ووکامرس

نمایش صحیح وضعیت موجودی محصولات یکی از مهم‌ترین بخش‌های مدیریت فروشگاه اینترنتی است. در بسیاری از فروشگاه‌ها مشاهده می‌شود که حتی زمانی که محصول «ناموجود» است یا تمام متغیرهای آن تمام شده‌اند، همچنان قیمت نمایش داده می‌شود و این موضوع می‌تواند باعث سردرگمی کاربران و کاهش اعتماد خریداران شود.
برای حل این مشکل، یک اسنیپت اختصاصی طراحی شده که به کمک آن، ووکامرس به‌صورت هوشمند بررسی می‌کند که آیا محصول یا متغیرهای آن موجودی دارند یا خیر. در صورتی که محصول ساده یا متغیر ناموجود باشد، قیمت مخفی شده و عبارت «ناموجود» با استایل مشخص به کاربر نمایش داده می‌شود.

قبل از اجرای کد:

  • محصول A – موجود

  • محصول B – ناموجود

  • محصول C – موجود

  • محصول D – ناموجود

بعد از اجرای کد:

  • محصول A – موجود

  • محصول C – موجود

  • محصول B – ناموجود

  • محصول D – ناموجود

 

این اسنیپت علاوه بر اینکه از بروز اشتباه در نمایش قیمت جلوگیری می‌کند، باعث بهبود تجربه کاربری، افزایش شفافیت و کاهش تماس‌های اضافی کاربران برای استعلام وضعیت موجودی می‌شود. همچنین فروشگاه‌هایی که از صفحه‌ساز Elementor استفاده می‌کنند، با این روش می‌توانند کنترل دقیق‌تری روی نمایش قیمت در ویجت‌های مرتبط داشته باشند.

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

/** 
*Author: TavTheme 
* Website: https://tavtheme.com/ 
* Instagram: @tavtheme 
*/
add_action('elementor/widget/render_content', function($content, $widget){

    if ($widget->get_name() !== 'woocommerce-product-price') {
        return $content;
    }

    global $product;
    if (!$product) return $content;

    // 📌 شرط جدید — اگر متای stock_status = outofstock بود
    $meta_stock = get_post_meta($product->get_id(), '_stock_status', true);
    if ($meta_stock === 'outofstock') {
        return '<p class="price">
            <span class="tav-call-price" style="color:#ff0000;font-weight:bold;">
                ناموجود
            </span>
        </p>';
    }

    // --- محصولات ساده ---
    if ($product->is_type('simple')) {

        $has_price = $product->get_regular_price() !== '' && $product->get_regular_price() >= 0;
        $out_of_stock = !$product->is_in_stock();

        if ($out_of_stock && $has_price) {
            return '<p class="price">
                <span class="tav-call-price" style="color:#ff0000;font-weight:bold;">
                    ناموجود
                </span>
            </p>';
        }

        return $content;
    }

    // --- محصولات متغیر ---
    if ($product->is_type('variable')) {

        $variations = $product->get_available_variations();
        $has_price = false;
        $all_out_of_stock = true;

        foreach ($variations as $v) {

            $variation_obj = wc_get_product($v['variation_id']);

            if ($variation_obj->get_regular_price() !== '' && $variation_obj->get_regular_price() >= 0) {
                $has_price = true;
            }

            if ($variation_obj->is_in_stock()) {
                $all_out_of_stock = false;
            }
        }

        if ($has_price && $all_out_of_stock) {
            return '<p class="price">
                <span class="tav-call-price" style="color:#ff0000;font-weight:bold;">
                    ناموجود
                </span>
            </p>';
        }

        return $content;
    }

    return $content;

}, 20, 2);

اشتراک گذاری

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

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

بقیه مقالات
با این کد حرفه‌ای، دکمه افزودن به سبد خرید ووکامرس را از صفحه محصول و آرشیو حذف کنید و یک دکمه «تماس بگیرید» جایگزین آن قرار دهید. مناسب محصولات مشاوره‌ای و استعلام قیمت.
با این اسنیپت حرفه‌ای ووکامرس، در صورت ناموجود بودن محصول یا تمام متغیرهای آن، قیمت به‌طور خودکار با متن «ناموجود» جایگزین می‌شود. راهکاری برای تجربه کاربری بهتر و جلوگیری از نمایش قیمت‌های اشتباه.
با این کد ساده، گالری‌های المنتور را به یک اسکرول افقی بی‌نهایت تبدیل کنید. سبک، واکنش‌گرا، بدون افزونه و مناسب برای نمایش حرفه‌ای تصاویر.
ثبت مشاوره یا پلاگین
تماس با ما
واتساپ تلگرام اینستاگرام ارسال تیکت