کد محدود کردن خرید محصولات با موجودی کم به یک عدد در ووکامرس
آیا تا به حال برای شما پیش آمده که موجودی یک محصول در فروشگاه به شدت کاهش یافته باشد و نگران باشید که یک مشتری تمام موجودی آن را یکجا خریداری کند؟ این موضوع به ویژه برای محصولاتی که تولید یا تأمین مجدد آنها دشوار است، یا برای محصولات ویژه و کمیاب که میخواهید بین مشتریان بیشتری توزیع کنید، بسیار حیاتی است. در این مقاله از مجموعه مقالات آموزشی وردپرس، یک کد کاربردی و استاندارد برای محدود کردن خرید محصولات با موجودی کم به یک عدد در ووکامرس ارائه میدهیم که با استفاده از آن میتوانید به طور خودکار، هر محصولی که موجودی آن کمتر از یک حد مشخص (مثلاً ۳ عدد) است را به صورت تکی (فروش انفرادی) در سبد خرید قرار دهید و از خرید تعداد بیشتر توسط یک کاربر جلوگیری کنید. این راهکار هوشمندانه به مدیریت بهتر موجودی، افزایش فرصت خرید برای مشتریان بیشتر و بهبود تجربه کاربری کمک میکند.
چرا محدود کردن خرید محصولات با موجودی کم اهمیت دارد؟
در مدیریت فروشگاههای اینترنتی، یکی از چالشهای اصلی، مدیریت موجودی محصولات با تقاضای بالا و عرضه محدود است. هنگامی که موجودی یک محصول به سطح پایینی میرسد، اگر یک مشتری بتواند تمام موجودی باقیمانده را یکجا خریداری کند، چندین مشکل ایجاد میشود:
- نارضایتی سایر مشتریان: سایر کاربرانی که به دنبال همان محصول هستند، فرصت خرید را از دست میدهند و این موضوع میتواند به کاهش اعتماد به فروشگاه شما منجر شود.
- از دست دادن فرصتهای فروش: با فروش تمام موجودی به یک نفر، فرصت جذب مشتریان جدید و افزایش پایگاه مشتریان را از دست میدهید.
- کاهش تجربه کاربری: مشتریانی که محصول را در سبد خرید خود دارند اما به دلیل اتمام موجودی نمیتوانند خرید را تکمیل کنند، تجربه منفی خواهند داشت.
- مدیریت دشوار موجودی: در صورت فروش یکجای موجودی کم به یک مشتری، برنامهریزی برای تأمین مجدد و مدیریت موجودی پیچیدهتر میشود.
استفاده از فیلتر woocommerce_is_sold_individually در ووکامرس، یک راهکار هوشمندانه برای مدیریت این وضعیت است. این فیلتر به شما امکان میدهد تا به طور شرطی، محصولات با موجودی کم را به صورت فروش انفرادی (Sold Individually) تنظیم کنید؛ یعنی کاربران فقط بتوانند یک عدد از آن محصول را به سبد خرید خود اضافه کنند.
راهکار محدود کردن خرید محصولات با موجودی کم با کد اختصاصی
برای محدود کردن خرید محصولات با موجودی کم در ووکامرس، از فیلتر woocommerce_is_sold_individually استفاده میکنیم. این فیلتر یکی از ابزارهای قدرتمند ووکامرس برای کنترل نحوه افزودن محصولات به سبد خرید است. کد ارائه شده در این مقاله، با دریافت موجودی محصول و مقایسه آن با یک عدد آستانه (مثلاً ۳ عدد)، به طور خودکار تشخیص میدهد که آیا محصول باید به صورت انفرادی فروخته شود یا خیر. اگر موجودی محصول کمتر از عدد آستانه باشد، محصول به صورت فروش انفرادی تنظیم میشود و کاربران فقط میتوانند یک عدد از آن را به سبد خرید اضافه کنند. این روش کاملاً استاندارد، سبک و بدون نیاز به نصب افزونه است و با تمامی نسخههای ووکامرس سازگاری دارد.
کد کامل محدود کردن خرید محصولات با موجودی کم در ووکامرس
در زیر کد کامل و استاندارد برای محدود کردن خرید محصولات با موجودی کم به یک عدد در ووکامرس آورده شده است. این کد را در انتهای فایل functions.php قالب فرزند خود قرار دهید. در این کد، عدد ۳ به عنوان آستانه موجودی در نظر گرفته شده است؛ هر محصولی که موجودی آن کمتر از ۳ باشد، به صورت انفرادی فروخته میشود. شما میتوانید این عدد را بر اساس نیاز خود تغییر دهید.
/*
* Limit Low Stock WooCommerce Products to One per Order
* Automatically sets products with stock below threshold to be sold individually
* Mahdi Jafarzadeh
* https://www.wpwm.ir/
*/
add_filter('woocommerce_is_sold_individually', 'limit_low_stock_to_one_per_order', 9999, 2);
function limit_low_stock_to_one_per_order($individually, $product) {
// Define the stock threshold (e.g., 3 units)
$stock_threshold = 3;
// Get the current stock quantity of the product
$stock_quantity = $product->get_stock_quantity();
// If stock is below threshold and product manages stock, enable sold individually
if ($product->managing_stock() && $stock_quantity !== null && $stock_quantity < $stock_threshold) {
$individually = true;
}
return $individually;
}نحوه عملکرد کد به صورت گام به گام
در این بخش، هر بخش از کد را به صورت دقیق بررسی میکنیم و نحوه عملکرد آن را توضیح میدهیم:
- خط ۶ – افزودن فیلتر با اولویت بالا: با استفاده از
add_filter('woocommerce_is_sold_individually', 'limit_low_stock_to_one_per_order', 9999, 2)، یک فیلتر به هوکwoocommerce_is_sold_individuallyاضافه میکنیم. عدد ۹۹۹۹ به عنوان اولویت، تضمین میکند که این فیلتر پس از سایر فیلترها اجرا شود و تغییرات ما بر روی خروجی نهایی اعمال گردد. دو پارامتر$individually(وضعیت فعلی فروش انفرادی) و$product(شیء محصول) به تابع ارسال میشوند. - خط ۸ – تعریف تابع: تابع
limit_low_stock_to_one_per_orderبا دو پارامتر ورودی تعریف میشود.$individuallyیک متغیر بولین است که نشان میدهد آیا محصول به صورت انفرادی فروخته میشود یا خیر و$productیک شیء از کلاسWC_Productاست که حاوی اطلاعات محصول مورد نظر میباشد. - خط ۱۰ – تعریف آستانه موجودی: متغیر
$stock_threshold = 3عدد آستانه موجودی را مشخص میکند. شما میتوانید این عدد را به هر مقداری که برای فروشگاه شما مناسب است تغییر دهید. - خط ۱۳ – دریافت موجودی محصول: با استفاده از
$product->get_stock_quantity()، موجودی فعلی محصول را دریافت میکنیم. این تابع تعداد موجودی محصول را به صورت عددی بازمیگرداند. - خطوط ۱۵ تا ۱۷ – بررسی شرایط و اعمال محدودیت: با یک شرط
if، سه شرط را بررسی میکنیم:- مدیریت موجودی (
$product->managing_stock()): اطمینان حاصل میکنیم که محصول دارای سیستم مدیریت موجودی فعال است. - موجودی نامعتبر نبودن (
$stock_quantity !== null): بررسی میکنیم که موجودی محصول مقدار معتبری داشته باشد. - موجودی کمتر از آستانه (
$stock_quantity < $stock_threshold): اگر موجودی محصول کمتر از عدد آستانه (۳) باشد، شرط برقرار میشود.
- مدیریت موجودی (
- اعمال فروش انفرادی: اگر هر سه شرط برقرار باشند، متغیر
$individuallyرویtrueتنظیم میشود. این کار باعث میشود که فیلد انتخاب تعداد در صفحه محصول حذف شده و کاربر فقط بتواند یک عدد از آن محصول را خریداری کند. - بازگشت مقدار: در نهایت، مقدار
$individually(که ممکن است تغییر کرده باشد) به عنوان خروجی تابع بازگردانده میشود تا ووکامرس بر اساس آن تصمیمگیری کند.
نکات مهم
در این بخش به نکات کلیدی برای استفاده صحیح از این کد اشاره میکنیم که باید به آنها توجه ویژهای داشته باشید:
- استفاده از قالب فرزند: کد را در فایل
functions.phpقالب فرزند قرار دهید تا با بروزرسانی قالب اصلی، تغییرات شما از بین نرود. - تنظیم عدد آستانه مناسب: عدد ۳ به عنوان آستانه موجودی در این کد پیشفرض است. بسته به نوع محصولات و استراتژی فروش شما، میتوانید این عدد را تغییر دهید. به عنوان مثال، برای محصولات بسیار کمیاب، میتوانید آستانه را روی ۵ یا ۱۰ تنظیم کنید.
- تأثیر بر محصولات متغیر: این کد برای محصولات ساده (Simple Products) به خوبی کار میکند. برای محصولات متغیر (Variable Products)، ممکن است نیاز به تنظیمات اضافی داشته باشید زیرا هر تغییرات (variation) موجودی جداگانهای دارد. برای محصولات متغیر، بهتر است کد را به گونهای کنید که موجودی هر تغییرات را به صورت جداگانه بررسی کند.
- تست پس از اعمال کد: پس از افزودن کد، حتماً یک محصول با موجودی کمتر از آستانه (مثلاً ۲ عدد) را در فروشگاه باز کنید و از عدم نمایش فیلد انتخاب تعداد اطمینان حاصل کنید.
- ارسال پیام به کاربر: این کد فقط فیلد انتخاب تعداد را حذف میکند و پیامی به کاربر نشان نمیدهد. برای بهبود تجربه کاربری، میتوانید با استفاده از فیلترهای دیگر مانند
woocommerce_single_product_summary، یک پیام توضیحی به کاربر نمایش دهید که دلیل محدودیت خرید را توضیح دهد. - تأثیر بر سبد خرید: اگر کاربری قبلاً تعداد بیشتری از یک محصول را در سبد خرید خود داشته باشد و موجودی آن به زیر آستانه کاهش یابد، این کد به طور خودکار تعداد موجود در سبد خرید را اصلاح نمیکند. برای مدیریت این سناریو، ممکن است نیاز به کدهای تکمیلی داشته باشید.
جمعبندی
در این مقاله از سری مقالات آموزشی وردپرس، به بررسی روش محدود کردن خرید محصولات با موجودی کم به یک عدد در فروشگاههای ووکامرس پرداختیم. با استفاده از کد ساده و استانداردی که ارائه شد، میتوانید به طور خودکار هر محصولی که موجودی آن کمتر از یک حد مشخص است را به صورت فروش انفرادی تنظیم کنید و از خرید تعداد بیشتر توسط یک کاربر جلوگیری نمایید. این راهکار هوشمندانه به مدیریت بهتر موجودی، افزایش فرصت خرید برای مشتریان بیشتر، بهبود تجربه کاربری و در نهایت افزایش فروش فروشگاه شما کمک میکند.
امیدواریم این آموزش برای شما مفید بوده باشد. اگر سوالی درباره محدود کردن خرید محصولات با موجودی کم، نحوه استفاده از کد یا هر بخش دیگری از این آموزش دارید، لطفاً در بخش نظرات مطرح کنید. همچنین اگر تجربهای در مدیریت موجودی ووکامرس یا بهبود تجربه کاربری دارید، خوشحال میشویم آن را با ما و سایر کاربران به اشتراک بگذارید.
