مخفی کردن قیمت محصولات ناموجود در ووکامرس
عرض سلان خدمت شما همراهان گرامی مکانیک وردپرس ؛
در این نوشته از آموزش وردپرس، به موضوع نحوه مخفی کردن قیمت محصولات ناموجود در ووکامرس پرداختیم.
در ادامه با ما همراه باشید…
آموزش مخفی کردن قیمت محصولات ناموجود در ووکامرس
چندی قبل، یکی از کاربران عزیز مکانیک وردپرس با ما سوالی در رابطه با مخفی کردن قیمت محصولات ناموجود در ووکامرس مطرح کرده بود.
همانطور که میدانید وقتی موجودی محصولی در ووکامرس به اتمام برسد، هرچند موجودی محصول صفر شده و در صورت فعال بودن کنترل موجودی انبار، امکان سفارش محصول میسر نخواهد بود اما قیمت محصول مورد نظر کماکان در سایت به نمایش گذاشته خواهد شد.
از آنجایی که به نظر میرسید این مسئله ممکن است برای افراد بسیاری ایده آل نباشد و خیلی از شما مایل باشید که قیمت محصولات خارج از موجودی را در فروشگاه خود مخفی کنید، به همین جهت تصمیم گرفتیم آموزش کوتاهی در زمینه مخفی کردن قیمت محصولات ناموجود در ووکامرس در سایت درج کنیم.
در آموزش امروز به شرح 3 روش ساده ولی موثر برای سفارشی کردن نحوه نمایش قیمت یا مخفی کردن آن در محصولات خارج از موجودی در ووکامرس خواهیم پرداخت.
مخفی کردن قیمت محصولات با استفاده از فیلتر های ووکامرس
قصد داریم از فیلتر های ووکامرس بهره بگیریم و کاری کنیم که قیمت محصولات به اتمام رسیده، چه در لیست محصولات و چه در صفحه ی خود محصول، به نمایش در نیاید.
برای این کار کافی است کد زیر را به فایل functions.php قالب وردپرس خود و یا افزونه ای طراحی شده مخصوص سایتتان اضافه کنید.
function mechwp_remove_outofstock_prices( $price, $product ) { if ( ! $product->is_in_stock() ) { $price = ''; } return $price; } add_filter( 'woocommerce_variable_sale_price_html', 'mechwp_remove_outofstock_prices', 10, 2 ); add_filter( 'woocommerce_variable_price_html', 'mechwp_remove_outofstock_prices', 10, 2 ); add_filter( 'woocommerce_get_price_html', 'mechwp_remove_outofstock_prices', 10, 2 );
پس از اضافه کردن کد بالا به سایتتان، خواهید دید که دیگر اثری از قیمت محصولات ناموجود در سایت دیده نمیشود.
مخفی کردن قیمت محصولات در ووکامرس با استفاده از استایل CSS
در این روش از استایل های CSS برای مخفی کردن قیمت و تعداد محصولات ناموجود در سایت کمک گرفته ایم.
برای استفاده از این روش کافی است که دو خط کد زیر را به فایل استایل سایتتان در محل دلخواه اضافه کرده و یا در بین کدهای استایل سفارشی قالبتان قرار دهید (از طریق پنل تنظیمات قالب و یا با مراجعه به بخش css اضافی در سفارشی ساز قالب در پنل مدیریت وردپرس):
.outofstock .price{display:none} .outofstock .amount{display:none}
این روش هرچند به درستی کار کرده و قیمت محصولات ناموجود را در سایت شما مخفی میکند اما یک نقطه ضعف دارد. ضعف این روش این است که در واقع قیمت محصول هنوز در کد سایت شما موجود است و هر شخصی با نگاه به سورس سایت شما میتواند قیمت را مشاهده کند.
کد های بالا صرفا باعث میشوند که هرچند قیمت در سورس سایت موجود است، ولی در حالت گرافیکی سایت به کاربران نشان داده نشود.
مخفی کردن قیمت محصولات در ووکامرس با سفارشی سازی تمپلیت های ووکامرس
این روش قیمت محصول را در لیست محصولات مخفی نخواهد کرد اما به شما اجازه میدهد که در صفحه ی تکی محصولات ناموجود، پیغام دلخواه خود را بجای قیمت محصول به مشتریان خود نشان دهید. بنابراین ترکیب این روش با روش اول به نظر منطقی میرسد و میتواند شما را به نتایج ایده آلی برساند.
برای استفاده از این روش باید ابتدا در فولدر قالب خود به زیر فولدر 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>
تغییرات را در فایل ذکر شده ذخیره کنید. حالا اگر به صفحه ی محصولی که موجود نیست مراجعه کنید (یعنی خود محصول را باز کنید) خواهید دید که بجای قیمت محصول، عبارت “تماس بگیرید” به نمایش گذاشته شده است. شما میتوانید این پیام را به دلخواه خود سفارشی سازی کنید. برای این کار کافی است که در خط 11 کد بالا، بجای عبارت تماس بگیرید، عبارت دلخواه خود را قرار دهید.
از این روش میتوانید به صورت ترکیبی در کنار روش 1 استفاده کنید اما امکان استفاده همزمان آن با روش دوم وجود ندارد. در واقع اگر از این روش در کنار روش 1 استفاده کنید دو اتفاق رخ خواهد داد. اول اینکه قیمت محصول ناموجود، در لیست محصولات نشان داده نخواهد شد و دوم اینکه در صفحه محصول ناموجود، پیام دلخواه شما بجای قیمت برای مشتریان به نمایش در خواهد آمد.
امیدوارم نکات ذکر شدهدر این نوشته از آموزش ووکامرس، برای شما عزیزان مفید و کاربردی باشد.
موفق و پاینده باشید…
- نظرات ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد
- نظراتی که حاوی تهمت یا افترا باشد منتشر نخواهد شد
- نظراتی که به غیر از زبان فارسی یا غیر مرتبط با مطلب باشد منتشر نخواهد شد
Visitor Rating: 5 Stars
Visitor Rating: 5 Stars