آنچه در این مقاله میخوانید [پنهانسازی]
اگر فروشگاه شما رشد کرده و می خواهید فروشندگان متعدد را بدون افزونه های سنگین مدیریت کنید، چندفروشندگی با JetEngine روشی منعطف برای ساخت داشبورد فروشنده، ثبت محصول از فرانت، ارتباط داده ها و نمایش هوشمند اطلاعات است. در این رویکرد شما کنترل کامل بر فرم ها، نقش ها، صفحات حساب کاربری و جریان تایید محتوا دارید و می توانید تجربه ای مطابق نیاز خود طراحی کنید.
پیش نیازها و طرح کلی راه اندازی
برای اجرای این راهکار به وردپرس پایدار، قالب سازگار، ووکامرس و افزونه JetEngine نیاز دارید. افزونه های کمکی مانند User Role Editor برای نقش ها و JetSmartFilters برای فیلترهای پیشرفته نیز می توانند مفید باشند. هدف، ساخت یک زیرساخت سبک و قابل توسعه است که اجزای آن به شکل ماژولار کنار هم کار کنند.
معماری کلی شامل نقش فروشنده، فیلدهای پروفایل فروشنده، فرم ثبت نام، فرم افزودن محصول، داشبورد فروشنده، نمایش سفارش ها و مکانیزم محاسبه کمیسیون است. هر بخش را به صورت مستقل می توان توسعه داد تا در آینده با نیازهای جدید به سادگی هماهنگ شود.
- وردپرس و ووکامرس به عنوان هسته فروشگاهی
- JetEngine برای فرم ها، پروفایل ساز، لیست های پویا و کوئری ساز
- یک افزونه نقش کاربری یا اسنیپت کوتاه برای تعریف نقش فروشنده
- درگاه پرداخت ووکامرس و صفحات سبد و تسویه حساب
طراحی مدل داده فروشنده و محصول
ابتدا مشخص کنید چه داده ای از فروشنده نگهداری می شود. پیشنهاد می شود فیلدهای پروفایل فروشنده را روی کاربر ذخیره کنید تا همراه حساب او باقی بماند و به راحتی در داشبورد و صفحات عمومی نشان داده شود. برای محصولات، از فیلدهای ووکامرس استفاده کنید و فقط در صورت نیاز فیلدهای سفارشی اضافه کنید.
فیلدهای متداول فروشنده شامل نام فروشگاه، لوگو، بنر، توضیحات کوتاه، شماره تماس، آدرس، سیاست ارسال و اطلاعات دریافت وجه است. این فیلدها در JetEngine به صورت User Meta تعریف می شوند تا در فرم ثبت نام و فرم ویرایش پروفایل قابل استفاده باشند.
- نام فروشگاه و شناسه یکتا آدرس فروشگاه
- لوگو و بنر برای صفحه پروفایل عمومی
- توضیح کوتاه، دسته بندی فعالیت و شبکه های اجتماعی
- شماره تماس و آدرس برای امور پشتیبانی
- درصد کمیسیون اختصاصی هر فروشنده در صورت نیاز
ساخت نقش فروشنده و ثبت نام کاربران
برای تفکیک دسترسی ها، یک نقش فروشنده بسازید. این نقش الزاما دسترسی مدیریتی ندارد و از طریق فرم های فرانت اند می تواند محصولات خود را ثبت و پروفایل را مدیریت کند. اگر ترجیح می دهید بدون افزونه نقش را بسازید، از اسنیپت زیر استفاده کنید و پس از اجرای یک بار، آن را غیرفعال کنید.
// فایل functions.php یا افزونه کد سفارشی
function je_add_vendor_role() {
add_role( 'vendor', 'Vendor', array( 'read' => true ) );
}
add_action( 'init', 'je_add_vendor_role' );
اکنون در JetEngine یک فرم ثبت نام بسازید. نوع اکشن را روی Register User بگذارید، فیلدهای ضروری را اضافه کنید و نقش پیش فرض را vendor قرار دهید. اگر نیاز به تایید مدیریت دارید، گزینه ارسال اعلان ایمیل به مدیر و وضعیت کاربر در حالت Pending را فعال کنید تا پس از بررسی دستی فعال شود.
- در JetEngine به Forms بروید و New Form را بزنید.
- فیلدهای نام فروشگاه، لوگو، توضیح، شماره تماس و ایمیل را اضافه کنید.
- در Actions، Register User را فعال و نقش را vendor تنظیم کنید.
- فیلدهای پروفایل را به عنوان User Meta ذخیره کنید.
- پیام های موفقیت و خطا را شخصی سازی کنید.
ایجاد فرم افزودن محصول از فرانت
برای این که فروشنده بدون ورود به پیشخوان بتواند محصول اضافه کند، یک فرم ایجاد محصول بسازید. با JetEngine می توان پست از نوع product را ساخت و متادیتاهای ووکامرس مانند قیمت و موجودی را تنظیم کرد. وضعیت محصول را در حالت Pending قرار دهید تا پس از تایید مدیر منتشر شود.
- یک فرم جدید در JetEngine بسازید و Post Submit را فعال کنید.
- Post Type را روی product قرار دهید و فیلدهای نام، توضیح کوتاه، تصویر شاخص و گالری را اضافه کنید.
- فیلدهای قیمت عادی و قیمت حراج را به متای مرتبط ووکامرس نگاشت کنید.
- فیلد دسته بندی محصول و برچسب ها را اضافه کنید.
- وضعیت محصول را Pending و نویسنده پست را کاربر جاری تنظیم کنید.
برای جلوگیری از اسپم و داده ناقص، قوانین اعتبارسنجی حداقل ها را قرار دهید. همچنین با Dynamic Visibility می توانید دکمه افزودن محصول را فقط برای نقش vendor نمایش دهید.
داشبورد فروشنده و نمایش داده پویا
با Profile Builder در JetEngine یک ناحیه کاربری بسازید که شامل زبانه های محصولات من، سفارش ها، کوپن ها و تنظیمات فروشگاه باشد. هر زبانه یک Template جدا با Listing Grid و کوئری مناسب خواهد داشت. برای محصولات، یک Listing از نوع product بسازید و با کوئری نویسنده برابر کاربر جاری فیلتر کنید.
برای سفارش ها لازم است بدانید هر آیتم سفارش متعلق به کدام فروشنده است. ساده ترین راه این است که نویسنده محصول را به عنوان فروشنده مرجع در هر آیتم سفارش ذخیره کنید و سپس در داشبورد آیتم هایی که vendor_id آن برابر کاربر جاری است را نشان دهید. کد زیر این اطلاعات را در لحظه ایجاد سفارش ذخیره می کند.
// ذخیره فروشنده و محاسبه کمیسیون روی آیتم های سفارش
add_action( 'woocommerce_checkout_create_order_line_item', function( $item, $cart_item_key, $values, $order ) {
$product_id = $item->get_product_id();
$vendor_id = (int) get_post_field( 'post_author', $product_id );
if ( $vendor_id ) {
$item->add_meta_data( 'vendor_id', $vendor_id, true );
$subtotal = floatval( $item->get_subtotal() );
$rate = floatval( get_user_meta( $vendor_id, 'commission_rate', true ) );
if ( $rate <= 0 ) { $rate = 10; } // پیش فرض 10 درصد
$commission = round( $subtotal * $rate / 100, 2 );
$earning = round( $subtotal - $commission, 2 );
$item->add_meta_data( 'vendor_commission', $commission, true );
$item->add_meta_data( 'vendor_earning', $earning, true );
}
}, 10, 4 );
حالا یک Query در JetEngine بسازید که Order Items را بر اساس متای vendor_id برابر کاربر جاری واکشی کند. در Listing مربوط به سفارش ها، ستون هایی مانند شماره سفارش، نام محصول، تعداد، مبلغ سهم فروشنده و وضعیت را نمایش دهید. برای جزئیات هر سفارش، لینک به صفحه تکی سفارش را اضافه کنید.
مدیریت کمیسیون و تسویه
برای تسویه می توان از گزارش های سفارشی در داشبورد فروشنده و یک فرآیند دستی یا نیمه خودکار استفاده کرد. سناریوهای مختلفی دارید: استفاده از یک افزونه آماده مدیریت کمیسیون، یا پیاده سازی سفارشی سبک با داده های ذخیره شده در آیتم های سفارش. جدول زیر به انتخاب رویکرد کمک می کند.
| روش مدیریت | نکته کلیدی |
|---|---|
| افزونه Dokan یا WCFM | کمیسیون، کیف پول و تسویه آماده؛ سفارشی سازی کمتر، سربار بیشتر |
| راهکار کاملا سفارشی با JetEngine | انعطاف بالا، کنترل کامل، نیازمند چند اسنیپت برای محاسبه و گزارش |
| ترکیبی | فرم و نمایش با JetEngine، تسویه و کیف پول با افزونه تخصصی |
اگر رویکرد سفارشی را انتخاب می کنید، نرخ کمیسیون هر فروشنده را به صورت User Meta ذخیره کنید و گزارش مجموع vendor_earning را با کوئری های تجمیعی یا خروجی CSV برای حسابداری تولید کنید. برای پرداخت ها می توان مرجع تراکنش و تاریخ تسویه را به عنوان متای سفارش نگهداری کرد.
کنترل دسترسی و تایید محتوا
نمایش فرم ها و بخش های داشبورد را با Dynamic Visibility محدود کنید تا فقط فروشندگان آن ها را ببینند. سفارش ها باید فقط برای صاحب آن قابل مشاهده باشد. محصولات ارسالی را ابتدا در حالت در انتظار بررسی نگه دارید و پس از کنترل کیفیت و قیمت گذاری، منتشر کنید. برای ویرایش محصول نیز یک فرم ویرایش محدود با دسترسی نقش vendor بسازید.
تجربه خرید و جستجو در بازارگاه
برای خریداران صفحه پروفایل عمومی فروشنده طراحی کنید که شامل بنر، لوگو، توضیح کوتاه و لیست محصولات باشد. از Listing Grid برای نمایش محصولات و از فیلترهای بر اساس قیمت، دسته بندی و برچسب استفاده کنید. اگر نیاز به فیلتر پیشرفته دارید، JetSmartFilters گزینه مناسبی است.
قرار دادن نشان فروشنده در کارت محصول و صفحه تکی محصول به خریدار کمک می کند برند فروشنده را تشخیص دهد. همچنین می توان صفحه همه فروشندگان را با یک Listing از نقش vendor و لینک به پروفایل هر فروشنده ایجاد کرد.
رفع خطاهای رایج و نکات عملی
- هماهنگی نقش ها: اگر فروشنده به پیشخوان دسترسی پیدا کرد، سطح دسترسی نقش را بازبینی کنید و از فرم های فرانت برای عملیات استفاده کنید.
- یکپارچگی سفارش ها: مطمئن شوید کد ذخیره vendor_id در همه انواع محصول از جمله متغیر اجرا می شود.
- اعتبارسنجی فرم: برای قیمت و موجودی قوانین حداقل و نوع داده بگذارید تا داده نامعتبر وارد نشود.
- کارایی: تعداد آیتم های Listing را صفحه بندی کنید و تصاویر را فشرده نگه دارید تا داشبورد سریع بماند.
- پشتیبان گیری: قبل از افزودن اسنیپت ها یا تغییرات ساختاری، از پایگاه داده بکاپ بگیرید.
یک مسیر نمونه برای پیاده سازی گام به گام
- نصب ووکامرس، JetEngine و تنظیم صفحات فروشگاه، سبد و تسویه حساب.
- تعریف نقش vendor و ساخت فرم ثبت نام فروشنده با اکشن Register User.
- ایجاد فیلدهای پروفایل فروشنده به عنوان User Meta و ساخت فرم ویرایش پروفایل.
- ساخت فرم افزودن محصول از فرانت با وضعیت Pending و نگاشت متاهای قیمت.
- پیاده سازی اسنیپت ذخیره vendor_id و کمیسیون روی آیتم های سفارش.
- ساخت داشبورد با Profile Builder شامل تب های محصولات، سفارش ها و تسویه.
- تنظیم Dynamic Visibility برای محدود کردن نمایش به نقش vendor.
- آزمون سناریو کامل از ثبت نام تا افزودن محصول و ثبت سفارش واقعی.
سفارشی سازی های پیشرفته
اگر نیاز به گزارش های مالی دقیق دارید، یک کوئری تجمیعی برای جمع کل vendor_earning بر اساس بازه تاریخ بسازید و آن را در قالب کارت های آمار نمایش دهید. برای اطلاع رسانی خودکار می توان از وب هوک فرم ها استفاده کرد تا هنگام ثبت نام فروشنده یا افزودن محصول، اعلان به تلگرام یا ابزارهای اتوماسیون ارسال شود.
در پروژه های بزرگ تر، می توان کمیسیون را بر اساس دسته بندی محصول یا بازه فروش تغییر داد. کافی است نرخ را هنگام تسویه بر اساس شرایط تعریف کنید و در متای سفارش ذخیره نمایید تا در تاریخچه شفاف بماند.
جمع بندی
با تکیه بر انعطاف JetEngine می توان یک بازارگاه سبک و قابل توسعه ایجاد کرد که فرم ها، پروفایل ها، داشبورد و نمایش داده ها دقیقا مطابق نیاز شما عمل کنند. اگر به امکانات پیچیده تسویه خودکار نیاز ندارید، پیاده سازی سفارشی با اسنیپت های سبک و داشبورد اختصاصی بهترین توازن میان کنترل و کارایی را فراهم می کند. در غیر این صورت، ترکیب این ساختار با افزونه های تخصصی تسویه نیز انتخاب معقولی است. در هر دو حالت، شالوده این سیستم بر طراحی درست فرم ها، نقش ها و کوئری های دقیق بنا می شود و مسیر موفقیت در چندفروشندگی با JetEngine را کوتاه می کند.






