کد مخفی کردن قیمت محصولات ناموجود در ووکامرس
آیا تا به حال برای شما پیش آمده که کاربری با دیدن قیمت یک محصول در فروشگاه شما، آن را به سبد خرید اضافه کند، اما در مرحله تسویه حساب متوجه شود که محصول موجود نیست؟ این تجربه ناامیدکننده نه تنها کاربر را آزرده میکند، بلکه میتواند نرخ تبدیل فروشگاه شما را کاهش دهد و اعتماد مشتریان را خدشهدار کند. در این مقاله از مجموعه مقالات آموزشی وردپرس، یک کد کاربردی و استاندارد برای مخفی کردن قیمت محصولات ناموجود در ووکامرس ارائه میدهیم که با استفاده از آن میتوانید قیمت محصولاتی که در انبار موجود نیستند را از دید کاربران پنهان کنید. این کار به بهبود تجربه کاربری، کاهش نرخ پرش و جلوگیری از مقایسه قیمت توسط رقبا کمک میکند.
چرا مخفی کردن قیمت محصولات ناموجود اهمیت دارد؟
نمایش قیمت برای محصولاتی که در انبار موجود نیستند، میتواند تأثیرات منفی متعددی بر فروشگاه شما داشته باشد:
- کاهش تجربه کاربری: کاربرانی که قیمت یک محصول را میبینند و سپس متوجه میشوند که موجود نیست، احساس سرخوردگی میکنند و این موضوع میتواند اعتماد آنها را به فروشگاه شما کاهش دهد.
- افزایش نرخ پرش (Bounce Rate): بازدیدکنندگانی که مکرراً با محصولات ناموجود و قیمتهای نمایش داده شده مواجه میشوند، احتمال بیشتری دارد که فروشگاه شما را ترک کنند.
- جلوگیری از مقایسه قیمت توسط رقبا: رقبا و ابزارهای ردیابی قیمت میتوانند از قیمتهای نمایش داده شده برای محصولات ناموجود استفاده کنند و استراتژی قیمتگذاری شما را شناسایی کنند.
- مناسب برای فروشگاههای B2B و عمدهفروشی: بسیاری از فروشگاههای B2B ترجیح میدهند قیمتها را فقط زمانی نمایش دهند که موجودی محصول تأیید شده باشد.
- تشویق به اقدام برای اطلاع از موجودی: با مخفی کردن قیمت، میتوانید به جای آن پیامهایی مانند “به زودی موجود میشود” یا “به من اطلاع بده” نمایش دهید.
راهکار مخفی کردن قیمت محصولات ناموجود با کد اختصاصی
برای مخفی کردن قیمت محصولات ناموجود در ووکامرس، از فیلتر woocommerce_get_price_html استفاده میکنیم. این فیلتر یکی از قدرتمندترین ابزارهای ووکامرس برای کنترل نمایش قیمت محصولات است و به ما اجازه میدهد تا قبل از نمایش قیمت، شرایط مختلفی را بررسی کنیم. کد ارائه شده در این مقاله، با استفاده از تابع $product->is_in_stock() که به صورت پیشفرض در ووکامرس وجود دارد، بررسی میکند که آیا محصول در انبار موجود است یا خیر. اگر محصول ناموجود باشد، قیمت به یک رشته خالی تغییر داده میشود و در نتیجه هیچ قیمتی به کاربر نمایش داده نمیشود. این روش کاملاً استاندارد، سبک و بدون نیاز به نصب افزونه است و با تمامی نسخههای ووکامرس سازگاری دارد.
کد کامل مخفی کردن قیمت محصولات ناموجود در ووکامرس
در زیر کد کامل و استاندارد برای مخفی کردن قیمت محصولات ناموجود در ووکامرس آورده شده است. این کد را در انتهای فایل functions.php قالب فرزند خود قرار دهید.
/*
* Hide Price for Out of Stock WooCommerce Products
* Removes the price display for products that are not in stock
* Mahdi Jafarzadeh
* https://www.wpwm.ir/
*/
add_filter('woocommerce_get_price_html', 'hide_price_if_out_of_stock', 9999, 2);
function hide_price_if_out_of_stock($price, $product) {
// Check if product is out of stock
if (!$product->is_in_stock()) {
// Return empty string to hide the price
return '';
}
return $price;
}کد پیشرفته با نمایش پیام جایگزین (بهبود تجربه کاربری)
برای بهبود تجربه کاربری، به جای حذف کامل قیمت، میتوانید یک پیام جایگزین مانند “ناموجود” یا “به زودی موجود میشود” نمایش دهید. نسخه پیشرفتهتر کد را در زیر مشاهده میکنید:
/*
* Hide Price and Show Custom Message for Out of Stock WooCommerce Products
* Replaces the price with a custom message for products that are not in stock
* Mahdi Jafarzadeh
* https://www.wpwm.ir/
*/
add_filter('woocommerce_get_price_html', 'replace_price_for_out_of_stock', 9999, 2);
function replace_price_for_out_of_stock($price, $product) {
if (!$product->is_in_stock()) {
// Return custom message instead of price
return '<span class="out-of-stock-price">ناموجود</span>';
}
return $price;
}نحوه عملکرد کد به صورت گام به گام
در این بخش، هر بخش از کد را به صورت دقیق بررسی میکنیم و نحوه عملکرد آن را توضیح میدهیم:
- خط ۶ – افزودن فیلتر با اولویت بالا: با استفاده از
add_filter('woocommerce_get_price_html', 'hide_price_if_out_of_stock', 9999, 2)، یک فیلتر به هوکwoocommerce_get_price_htmlاضافه میکنیم. عدد ۹۹۹۹ به عنوان اولویت، تضمین میکند که این فیلتر پس از سایر فیلترها اجرا شود و تغییرات ما بر روی خروجی نهایی اعمال گردد. دو پارامتر$price(قیمت فعلی) و$product(شیء محصول) به تابع ارسال میشوند. - خط ۸ – تعریف تابع: تابع
hide_price_if_out_of_stockبا دو پارامتر ورودی تعریف میشود.$priceشامل قیمت نمایش داده شده و$productیک شیء از کلاسWC_Productاست که حاوی اطلاعات محصول مورد نظر میباشد. - خط ۱۰ – بررسی موجودی محصول: با استفاده از
$product->is_in_stock()بررسی میشود که آیا محصول در انبار موجود است یا خیر. این تابع در صورت موجود بودن، مقدارtrueو در غیر این صورتfalseبازمیگرداند. - خطوط ۱۱ تا ۱۲ – مخفی کردن قیمت: اگر محصول ناموجود باشد (
!$product->is_in_stock())، شرطifبرقرار شده و قیمت به یک رشته خالی ('') تنظیم میشود. این کار باعث میشود که هیچ قیمتی به کاربر نمایش داده نشود. - خط ۱۳ – بازگشت مقدار: در نهایت، مقدار
$price(که ممکن است تغییر کرده باشد) به عنوان خروجی تابع بازگردانده میشود تا ووکامرس بر اساس آن تصمیمگیری کند. - نسخه پیشرفته – نمایش پیام جایگزین: در نسخه پیشرفته، به جای رشته خالی، یک پیام سفارشی مانند
<span class="out-of-stock-price">ناموجود</span>بازگردانده میشود که میتوانید آن را با استایلدهی CSS سفارشی کنید.
نکات مهم
در این بخش به نکات کلیدی برای استفاده صحیح از این کد اشاره میکنیم که باید به آنها توجه ویژهای داشته باشید:
- استفاده از قالب فرزند: کد را در فایل
functions.phpقالب فرزند قرار دهید تا با بروزرسانی قالب اصلی، تغییرات شما از بین نرود. - تأثیر بر محصولات متغیر: این کد برای محصولات ساده (Simple Products) به خوبی کار میکند. برای محصولات متغیر (Variable Products)، ممکن است نیاز به فیلتر جداگانهای داشته باشید. ووکامرس در نسخههای جدیدتر، قیمت تغییرات ناموجود را به طور پیشفرض مخفی میکند، اما برای اطمینان از عملکرد صحیح، کد را تست کنید.
- تست پس از اعمال کد: پس از افزودن کد، حتماً یک محصول ناموجود را در فروشگاه باز کنید و از عدم نمایش قیمت اطمینان حاصل کنید.
- مخفی کردن فقط در صفحات خاص: اگر میخواهید قیمت فقط در صفحات فروشگاه و دستهبندی مخفی شود اما در صفحه تکی محصول نمایش داده شود، میتوانید از توابع شرطی مانند
is_shop()وis_product_category()استفاده کنید. - سازگاری با تمهای مختلف: برخی تمها ممکن است نمایش قیمت را به روشهای متفاوتی مدیریت کنند. در صورت عدم عملکرد صحیح کد، با یک برنامهنویس وردپرس مشورت کنید.
- استفاده از افزونه به جای کد: اگر با ویرایش فایل
functions.phpآشنایی ندارید، میتوانید از افزونههای آماده مانند Hide Price & Add to Cart استفاده کنید.
جمعبندی
در این مقاله از سری مقالات آموزشی وردپرس، به بررسی روش مخفی کردن قیمت محصولات ناموجود در ووکامرس پرداختیم. با استفاده از کد ساده و استانداردی که ارائه شد، میتوانید قیمت محصولاتی که در انبار موجود نیستند را از دید کاربران پنهان کنید. نسخه پیشرفته کد نیز امکان نمایش پیام جایگزین را فراهم میکند که تجربه کاربری را بهبود میبخشد. این راهکار به کاهش نرخ پرش، جلوگیری از مقایسه قیمت توسط رقبا و بهبود اعتماد مشتریان کمک میکند. این یک اقدام ساده اما مؤثر برای بهینهسازی فروشگاه ووکامرس شماست.
امیدواریم این آموزش برای شما مفید بوده باشد. اگر سوالی درباره مخفی کردن قیمت محصولات ناموجود، نحوه استفاده از کد یا هر بخش دیگری از این آموزش دارید، لطفاً در بخش نظرات مطرح کنید. همچنین اگر تجربهای در بهبود تجربه کاربری در ووکامرس دارید، خوشحال میشویم آن را با ما و سایر کاربران به اشتراک بگذارید.
