رابط طلب تقسيم جديد للعميل من الطلب الأصلي في ووكوميرس
توزيع الطلبات في ووكوميرس: كيفية ربط الطلبات الجديدة بالعملاء
عندما تتعامل مع متجر ووكوميرس، قد تواجه حالات تحتاج فيها إلى تقسيم الطلبات، خاصة عندما يكون هناك منتجات في حالة الطلب المتأخر (Backorder). يعد هذا الأمر ضرورة لضمان تجربة تسوق سلسة للعميل. في هذا المقال، سنستعرض كيفية إنشاء طلب جديد مرتبط بالعميل الأصلي عند تقسيم الطلبات ضمن ووكوميرس.
خطوات تقسيم الطلبات في ووكوميرس
لتقسيم الطلبات، نحتاج إلى تضمين جزء من الكود يأتي ضمن دالة تتعامل مع إجراء إتمام الطلب. عند استلام طلب يحتوي على منتجات في حالة الطلب المتأخر، سنتأكد من إنشاء طلب جديد مرتبط بالعميل الأصلي.
الكود اللازم لتقسيم الطلبات
في بداية الأمر، نقوم بالتحقق مما إذا كانت هناك أي منتجات في حالة الطلب المتأخر. إذا كانت هناك منتجات متأخرة، نقوم بإنشاء طلب جديد يضم هذه المنتجات. نستخدم الكود التالي لتحقيق ذلك:
“`php
function sa_woocommerce_checkout_order_on_backorder( $order_id, $posted_data, $order ) {
// تحقق من وجود طلبات متأخرة
$check_for_back_orders = false;
// جولة من خلال عناصر الطلب
foreach ( $order->get_items() as $item_key => $item ) {
$product = $item->get_product();
// إذا كان المنتج في الطلب المتأخر
if ( $product->is_on_backorder() ) {
if ( !$check_for_back_orders ) {
$check_for_back_orders = true;
$backorder_order = wc_create_order(); // إنشاء طلب جديد
}
// إضافة المنتج إلى الطلب الجديد
$backorder_order->add_product( $product, $item[‘quantity’] );
$order->remove_item( $item->get_id() ); // حذفها من الطلب الأصلي
}
}
// إذا كان هناك طلبات متأخرة
if ( $check_for_back_orders ) {
$order->calculate_totals();
$order->save();
// نقل معلومات العملاء
$address = array(
‘first_name’ => $order->get_billing_first_name(),
‘last_name’ => $order->get_billing_last_name(),
’email’ => $order->get_billing_email(),
‘phone’ => $order->get_billing_phone(),
‘address_1’ => $order->get_billing_address_1(),
‘address_2’ => $order->get_billing_address_2(),
‘city’ => $order->get_billing_city(),
‘state’ => $order->get_billing_state(),
‘postcode’ => $order->get_billing_postcode(),
‘country’ => $order->get_billing_country()
);
// إعداد عنوان الشحن
$shipping = array(
‘first_name’ => $order->get_shipping_first_name(),
‘last_name’ => $order->get_shipping_last_name(),
‘address_1’ => $order->get_shipping_address_1(),
‘address_2’ => $order->get_shipping_address_2(),
‘city’ => $order->get_shipping_city(),
‘state’ => $order->get_shipping_state(),
‘postcode’ => $order->get_shipping_postcode(),
‘country’ => $order->get_shipping_country()
);
// نقل العملة وطريقة الدفع
$currency = $order->get_currency();
$payment_gateway = $order->get_payment_method();
// تعيين العناوين والبيانات للطلب الجديد
$backorder_order->set_address( $address, ‘billing’ );
$backorder_order->set_address( $shipping, ‘shipping’ );
$backorder_order->set_currency( $currency );
$backorder_order->set_payment_method( $payment_gateway );
// حساب الإجماليات
$backorder_order->calculate_totals();
$backorder_order->add_order_note( ‘طلب متأخر تلقائي. تم إنشاؤه من الطلب الأصلي برقم: ‘ . $order_id );
$backorder_order->update_status( ‘processing’ ); // تعيين حالة الطلب
}
}
add_action( ‘woocommerce_checkout_order_processed’, ‘sa_woocommerce_checkout_order_on_backorder’, 10, 3 );
“`
فوائد ربط الطلبات بالعملاء الأصليين
تتيح لنا هذه الطريقة تقسيم الطلبات بشكل فعال وضمان أن الطلبات الجديدة المرتبطة بالمنتجات المتأخرة تبقى مرتبطة بالعملاء. تعتبر هذه العملية ضرورية لتحسين تجربة العملاء، ستمكنهم من متابعة الطلبات الخاصة بهم دون أي تعقيدات إضافية.
تساعد هذه الخطوات في تحقيق أكبر فائدة من نظام إدارة الطلبات لدى ووكوميرس، مما يجعل العملية أكثر سلاسة واحترافية.
استنتاج
إن عملية ربط الطلبات الجديدة بالعملاء الأصليين عند تقسيم الطلبات في ووكوميرس تعتبر خطوة أساسية لتحقيق جودة عالية في خدمة العملاء. بالاعتماد على الكود المستخدم في هذا المقال، يمكنك ضمان ربط الطلبات بشكل صحيح ومنظم، مما يوفر للمستخدم تجارب تسوق خالية من المتاعب.