«هل يمكنكم تغيير طلبي إلى المقاس 32 بدلًا من 30؟» من أكثر الرسائل شيوعًا التي يتلقاها متجر أزياء إلكتروني بعد الدفع، ولا يملك WooCommerce أي إجابة مدمجة لها.
عقبتان منفصلتان
العقبة الأولى أن عناصر الطلب في WooCommerce لا تملك إجراء «تغيير المتغير» في أي مكان من الواجهة. يمكنك تعديل الكمية والسعر في سطر موجود، أو حذفه وإضافة منتج آخر من البداية، لكن تبديل المتغير فقط مع الإبقاء على المنتج والسعر والكمية نفسها غير متاح.
والعقبة الثانية الأقل وضوحًا أن تعديل العناصر الأصلي في WooCommerce لا يعمل إلا ما دام $order->is_editable() يعيد true، أي في التثبيت الافتراضي عندما تكون حالة الطلب pending أو on-hold أو auto-draft. وعمليًا، تكون معظم الطلبات الحقيقية قد انتقلت إلى Processing حين يطلب العميل تغيير المقاس، ما يقفل المحرر الأصلي تمامًا.
ما الذي بنيناه
أضفنا رابط Change variant أسفل كل عنصر منتج متغير في شاشة تعديل الطلب، مستقلًا عمدًا عن فحص is_editable() في WooCommerce ومقيدًا بصلاحية المدير فقط، لأن تصحيح المتغير لاحقًا هو بالضبط الحالة التي يكون فيها الطلب قد تقدّم. النقر عليه يحمّل كل تركيبات المقاس واللون والطول للمنتج كأزرار قابلة للنقر، بإعادة استخدام مكون المنتقي نفسه الذي بنيناه لـ Manual Order Creator.
اختيار متغير جديد يستدعي دالة WooCommerce نفسها WC_Order_Item_Product::set_variation()، وهي الدالة ذاتها التي تستخدمها صفحة الدفع داخليًا عند إنشاء العنصر لأول مرة، فتنتهي البيانات الوصفية للخصائص بالشكل الذي يتوقعه كل جزء آخر من WooCommerce، بدلًا من تقريب يدوي يتعطل في رسائل الطلبات أو تصدير CSV.
كل تغيير يكتب أيضًا ملاحظة في الطلب تسجل بدقة ما تغيّر (مثلًا من Size 56 / Length 43 / Deep Blue إلى Size 50 / Length 43 / Deep Blue)، ليبقى سجل تدقيق واضح إن اعترض العميل على ما استلمه.
ما الذي لا تفعله عمدًا
هذه الميزة تبدّل هوية المتغير فقط: المقاس واللون والطول واسم العنصر. ولا تغيّر السعر أو الكمية أو المخزون تلقائيًا. هذا حد مقصود: فتغيير ما دُفع من العميل بصمت أو تعديل أرقام المخزون تلقائيًا قرارات يجب أن يتخذها الموظف صراحة، لا أن تكون آثارًا جانبية لتصحيح المقاس.
أهم الدروس
- الميزة التي تعمل فقط ما دام الطلب «قابلًا للتعديل» بالمعنى الضيق للمنصة كثيرًا ما تحل الحالة الخطأ؛ فالحاجة الحقيقية تظهر بعد أن تُغلق تلك النافذة.
- إعادة استخدام دوال الضبط الخاصة بالمنصة، بدلًا من كتابة البيانات الوصفية مباشرة، هو ما يبقي التغييرات المخصصة متوافقة مع كل ما يقرأ تلك البيانات.
- رسم حد صريح لما لا تلمسه الميزة (السعر، المخزون) لا يقل أهمية عما تفعله.
اقرأ أيضًا: توسيع نافذة معاينة الطلب، كيف بنينا أداة إنشاء الطلبات يدويًا.
هل تواجه قيدًا مشابهًا في لوحة إدارة WooCommerce أو WordPress لديك؟ لنتحدث؛ فـ ArtinTech Solution تبني هذا النوع تحديدًا من أدوات المتاجر المخصصة.