مهدی محسنی نیا
3 سال پیش توسط مهدی محسنی نیا مطرح شد
8 پاسخ

ساخت شناسه سفارش منحصر به فرد در ووکامرس

با سلام خدمت برنامه نویسان
دوستان بنده قصد دارم شناسه سفارشی که در ووکامرس بعد از خرید محصول رو منحصر به فرد دارای پسوند و پیشوند کنم افزونه هایی هست custom-order-numbers-for-woocommerce و .. که میتونین فقط عدد بزارین قبل و بعد ولی من میخام به صورت پویا با شورت کد یا کد php اطلاعات دو تا فیلد فرم ثبت سفارش مثلا کد ملی طرف بیاد بچسبه به شناسه سفارشم که توی افزونه های شدنی نیست
راهی یا افزونه ای سراغ ندارین که مشکلمو حل کنه ؟؟؟
ممنون


ثبت پرسش جدید
مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
0

سلام
@mehdimohseninia71
یه فیلتر بود به نام woocommerce_order_number ولی من تا حالا تستش نکردم
این کد رو میتونید داخل functions.php قالبتون قرار بدین
به این صورت استفاده میشه :

add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );

function change_woocommerce_order_number( $order_id ) {

    $prefix = 'DGK'; 
    $suffix = 'PRO'; 
    $order_id = str_ireplace("#", "", $order_id); //remove # before from order id
    $new_order_id = $prefix . $order_id . $suffix;
    return $new_order_id;
}

مهدی محسنی نیا
تخصص : طراح وردپرس و سئو منیجر
@mehdimohseninia71 3 سال پیش آپدیت شد
0

سلام @mehdi.mahdavi97
ممنون از راهنماییت
ولی خوب من میخام از فیلدهای بخش ثبت سفارشم دیتا رو واکشی کنم باید include کنم از فایل فرم ثبت سفارش ؟؟؟ تا از دیتای فیلدهاش به طور مثال کد ملیش استفاده کنم بعد این functions.php اصلا میشه include کرد دردسر نشه چون function.php حساس؟ چجوری میتونم متغییر پاس بدم به نظر شما؟


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
1

@mehdimohseninia71
خواهش میکنم
نیازی به include نیست ، شما داخل این فانکشن $order_id رو دارین پس میتونید اطلاعات سفارش رو بگیرین و از اطلاعات سفارش هم میتونید اطلاعات مشتری رو بدست بیارین

$order = new WC_Order($order_id);

مهدی محسنی نیا
تخصص : طراح وردپرس و سئو منیجر
@mehdimohseninia71 3 سال پیش مطرح شد
0

@mehdi.mahdavi۹۷
ممنون از راهنماییت
نه ببین جواب نداد اون مثال شما که قطعه کدو دادی درسته بجای $prefix میخام داینامیک کد ملی رو از صورت حساب یا order بگیره که نیاز داره مثلا لیست order چیزی فراخونی بشه من حالا نمیدونم همچین لیستی هست یا نه شما توی تعریف اولیه تابع $order_id رو پاس دادین بقیه اطلاعاتشو چجوری باید به دست بیارم اصلا call شده یا نه. مثلا قطعه کد زیر که جواب نداده ولی منظورمو میتونم برسونم
function change_woocommerce_order_number( $order ) {

$prefix = ''.$order[2];
$suffix = 'PRO'; 
$order_id = str_ireplace("#", "", $order[1]); //remove # before from order id
$new_order_id = $prefix . $order_id . $suffix;
return $new_order_id;

}

توی دیتابیسم گشتم ببینم که اسم این پارامتر چیه ولی نتونستم ممنون میشم راهنمایی کنی


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
0

@mehdimohseninia71
سلام
توضیح دادم به چه صورت باید اطلاعات سفارش رو بدست بیارین
من نمیدونم کد ملی رو به چه صورت به اطلاعات مشتری اضافه کردین ، ولی تو این کد من کد پستی مشتری رو به عنوان prefix شماره سفارش اضافه میکنم

add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );

function change_woocommerce_order_number( $order_id ) {

    $order = new WC_Order($order_id);// دریافت اطلاعات سفارش
    $postcode=$order->get_billing_postcode();  // دریافت کد پستی سفارش
    $prefix = $postcode;
    $suffix = 'PRO';
    $order_id = str_ireplace("#", "", $order_id); //remove # before from order id
    $new_order_id = $prefix . $order_id . $suffix;
    return $new_order_id;
}

اگر به صورت متا دیتا اضافه کردین اینطوری میتونید دریافتش کنید

$order->get_meta('')

که باید key یا همون نامش رو به این متد پاس بدین

اگر با پلاگین اضافه کردین نامش رو بگین تا راهنمایی کنم


جعفر
@jafarjafari 2 سال پیش مطرح شد
0

سلام بسیار آموزش خوبی ارائه دادی ابتدا ممنون

پلاگین ها میان کد سفارش رو تبدیل میکنن به یه چیزی مثل زیر
prefix-orderID-suffix
و پیشوند رو میشه تاریخ سال و ماه رو روز گذاشت
orderid رو میشه یه عدد متوالی که از ۱ شروع بشه که بصورت زور یا ماه یا سال ریست بشه و دوباره از ۱ شروع بشه
و پسوند رو هم کد پستی یا هر چیزی

البته توی پلاگین ها جای همه این ها میشه عوض شه

میتونید نمونه کدی ارائه بدید که این مشخصات رو داشته باشه تا مجبور نشیم از پلاگین سنگین بوستر ووکامرس استفاده کنیم


جعفر
@jafarjafari 2 سال پیش مطرح شد
0

 تصویر

یه چیزی مثل تصویر افزونه بالا
که خارجی هست و امکان استفاده درست در ایران وجود ندارد


جعفر
@jafarjafari 2 سال پیش آپدیت شد
0

من تا اینجا پیش رفتم
فقط تاریخ شمسی نمیشه

( # ) هم از ابتدای شماره سفارش حذف نمیشه


add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );

function change_woocommerce_order_number( $order_id ) {

    $order = new WC_Order($order_id);
    // The orders date
    $order_date = $order->get_date_created();
    $order_date = $order_date->date('Y-m-d');

    $prefix ='sepia-';
    $suffix =$order_date;
    $order_id =str_replace("#", "", $order_id); //remove # before from order id
    $new_order_id =$prefix . $suffix . $order_id;
    return $new_order_id;
}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام