همانطور که می دانید وقتی موجودی محصولی در ووکامرس به اتمام برسد، هرچند موجودی محصول صفر شده و در صورت فعال بودن کنترل موجودی انبار، امکان سفارش محصول میسر نخواهد بود اما قیمت محصول مورد نظر کماکان در سایت به نمایش گذاشته خواهد شد. در این نوشته روش های مخفی کردن قیمت محصولات ناموجود در ووکامرس را بررسی خواهیم کرد. همراه ما باشید.
مخفی کردن قیمت محصولات ناموجود در ووکامرس
روش 1 : مخفی کردن قیمت با استفاده از فیلتر های ووکامرس
در روش اول، قصد داریم از فیلتر های ووکامرس بهره بگیریم و کاری کنیم که قیمت محصولات به اتمام رسیده، چه در لیست محصولات و چه در صفحه ی خود محصول، به نمایش در نیاید. برای این کار کافی است کد زیر را به فایل functions.php قالب خود و یا افزونه ای طراحی شده مخصوص سایتتان اضافه کنید.
function mrcode_remove_outofstock_prices( $price, $product ) {
if ( ! $product->is_in_stock() ) {
$price = '';
}
return $price;
}
add_filter( 'woocommerce_variable_sale_price_html', 'mrcode_remove_outofstock_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'mrcode_remove_outofstock_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'mrcode_remove_outofstock_prices', 10, 2 );
پس از اضافه کردن کد بالا به سایتتان، خواهید دید که دیگر اثری از قیمت محصولات ناموجود در سایت دیده نمی شود.
روش 2 : مخفی کردن قیمت با استفاده از استایل CSS
روش دوم برای مخفی کردن قیمت محصولات ناموجود در ووکامرس کاملا ساده است. در این روش از استایل های CSS برای مخفی کردن قیمت و تعداد محصولات ناموجود در سایت کمک گرفته ایم. برای استفاده از این روش کافی است که دو خط کد زیر را به فایل استایل سایتتان در محل دلخواه اضافه کرده و یا در بین کدهای استایل سفارشی قالبتان قرار دهید (از طریق پنل تنظیمات قالب و یا با مراجعه به بخش css اضافی در سفارشی ساز قالب در پنل مدیریت وردپرس) :
.outofstock .price{display:none}
.outofstock .amount{display:none}
این روش هرچند به درستی کار کرده و قیمت محصولات ناموجود را در سایت شما مخفی میکند اما یک نقطه ضعف دارد. ضعف این روش این است که در واقع قیمت محصول هنوز در کد سایت شما موجود است و هر شخصی با نگاه به سورس سایت شما میتواند قیمت را مشاهده کند. کد های بالا صرفا باعث میشوند که هرچند قیمت در سورس سایت موجود است، ولی در حالت گرافیکی سایت به کاربران نشان داده نشود.
روش 3 : مخفی کردن قیمت با سفارشی سازی تمپلیت های ووکامرس
روش سوم مخفی کردن قیمت محصولات ناموجود در ووکامرس بسیار جالب خواهد بود. این روش قیمت محصول را در لیست محصولات مخفی نخواهد کرد اما به شما اجازه می دهد که در صفحه ی تکی محصولات ناموجود، پیغام دلخواه خود را بجای قیمت محصول به مشتریان خود نشان دهید. بنابراین ترکیب این روش با روش اول به نظر منطقی میرسد و میتواند شما را به نتایج ایده آلی برساند.
برای استفاده از این روش باید ابتدا در فولدر قالب خود به زیر فولدر woocommerce مراجعه کرده و سپس به زیر فولدر single-product بروید. یعنی مسیر زیر :
yourtheme/woocommerce/single-product
در مسیر بالا، منظور از yourtheme نام قالب شماست. اگر در قالبتان این مسیر را پیدا نکردید، نگران نباشید. (مثلا هرچند امکان استفاده از ووکامرس در قالب Twenty Seventeen وجود دارد ولی این قالب فاقد مسیر بالاست) در چنین حالتی کافی است که خودتان این مسیر را در قالبتان ایجاد کنید. پس از مراجعه به این مسیر یک فایل با نام price.php در این آدرس ساخته و کد زیر را در آن قرار دهید (دقت کنید که اینکودینگ فایل utf-8 باشد در غیر این صورت امکان استفاده از زبان فارسی در آن میسر نخواهد بود) :
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
global $post, $product; ?>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<p class="price"> <?php
$stockamount = $product->get_stock_quantity();
$price = $product->get_price_html();
$pricelabel = "تماس بگیرید";
if($stockamount == 0) {
echo $pricelabel;
} else {
echo $price;
}; ?>
</p>
<meta itemprop="price" content="<?php echo $product->get_price(); ?>" />
<meta itemprop="priceCurrency" content="<?php echo get_woocommerce_currency(); ?>" />
<link itemprop="availability" href="http://schema.org/<?php echo $product->is_in_stock() ? 'InStock' : 'OutOfStock'; ?>" />
</div>
تغییرات را در فایل ذکر شده ذخیره کنید. حالا اگر به صفحه ی محصولی که موجود نیست مراجعه کنید (یعنی خود محصول را باز کنید) خواهید دید که بجای قیمت محصول، عبارت “تماس بگیرید” به نمایش گذاشته شده است. شما می توانید این پیام را به دلخواه خود سفارشی سازی کنید. برای این کار کافی است که در کد بالا، بجای عبارت تماس بگیرید، عبارت دلخواه خود را قرار دهید.
از این روش می توانید به صورت ترکیبی در کنار روش 1 استفاده کنید اما امکان استفاده همزمان آن با روش دوم وجود ندارد. در واقع اگر از این روش در کنار روش 1 استفاده کنید دو اتفاق رخ خواهد داد. اول اینکه قیمت محصول ناموجود، در لیست محصولات نشان داده نخواهد شد و دوم اینکه در صفحه محصول ناموجود، پیام دلخواه شما بجای قیمت برای مشتریان به نمایش در خواهد آمد.
موفق و پیروز باشید…