في عالم التجارة الإلكترونية، يُعد WooCommerce أحد أكثر الإضافات شعبية لمنصة WordPress، حيث يتيح إنشاء متاجر إلكترونية متقدمة بسهولة. ومع ذلك، قد يواجه أصحاب متاجر ووكومرس في المملكة العربية السعودية تحديًا في تخصيص خيارات الشحن والدفع لتتناسب مع التقسيمات الإدارية المحلية.
بشكل افتراضي، لا يدعم WooCommerce جميع المناطق الإدارية السعودية كخيارات في حقل “الولاية” أو “المنطقة” في صفحة إتمام الطلب (Checkout). هنا يأتي دور استخدام “Snippet”، وهو قطعة كود PHP صغيرة، لتعديل هذه الخيارات دون الحاجة إلى تعديل النواة الأساسية للإضافة.
في هذا المقال، سنتعرف على كيفية إضافة الـ13 منطقة إدارية السعودية إلى WooCommerce باستخدام فلتر “woocommerce_states”. سنغطي القائمة الكاملة للمناطق، الخطوات التفصيلية، والكود المطلوب، مع نصائح لتجنب الأخطاء الشائعة.
ما هي المناطق الإدارية السعودية؟
المملكة العربية السعودية مقسمة إلى 13 منطقة إدارية (أو إمارة)، وفقًا للتقسيم الرسمي. هذه المناطق تشمل:
- الرياض (Riyadh) – رمز: SA-01
- مكة المكرمة (Makkah al Mukarramah) – رمز: SA-02
- المدينة المنورة (Al Madinah al Munawwarah) – رمز: SA-03
- الشرقية (Ash Sharqīyah) – رمز: SA-04
- القصيم (Al Qassim) – رمز: SA-05
- حائل (Ḥa’il) – رمز: SA-06
- تبوك (Tabuk) – رمز: SA-07
- الحدود الشمالية (Al Hudud ash Shamaliyah) – رمز: SA-08
- جازان (Jāzān) – رمز: SA-09
- نجران (Najran) – رمز: SA-10
- الباحة (Al Bahah) – رمز: SA-11
- الجوف (Al Jawf) – رمز: SA-12
- عسير (‘Asir) – رمز: SA-14
هذه المناطق مهمة لأغراض الشحن، حيث يمكن ربطها بمعدلات شحن مختلفة أو قيود على المنتجات بناءً على الموقع الجغرافي.
لماذا نستخدم Snippet؟
بدلاً من استخدام إضافات خارجية (مثل “States, Cities, and Places for WooCommerce”) التي قد تكون مدفوعة أو تسبب تعارضات، يمكن استخدام Snippet لتعديل الولايات مباشرة. هذا يعتمد على فلاتر WooCommerce المدمجة، مما يجعله حلاً خفيفًا وآمنًا. يمكن إضافته إلى ملف functions.php في قالبك الفرعي (Child Theme) أو عبر إضافة مثل “Code Snippets” لتجنب فقدان التعديلات عند تحديث القالب.
الخطوات التفصيلية لإضافة المناطق
الخطوة 1: التحضير
- تأكد من تثبيت WooCommerce على موقع WordPress الخاص بك.
- قم بتثبيت إضافة “Code Snippets” من مستودع WordPress لإضافة الكود بأمان.
الخطوة 2: إضافة الكود Snippet
استخدم الكود التالي. قم بنسخه ولصقه في ملف functions.php أو في Snippet جديد عبر الإضافة المذكورة. تأكد من تفعيل الـSnippet بعد الإضافة.
add_filter( 'woocommerce_states', 'wa_add_saudi_arabia_states' );
function wa_add_saudi_arabia_states( $states ) {
$states['SA'] = array(
'SA-01' => 'الرياض',
'SA-02' => 'مكة المكرمة',
'SA-03' => 'المدينة المنورة',
'SA-04' => 'الشرقية',
'SA-05' => 'القصيم',
'SA-06' => 'حائل',
'SA-07' => 'تبوك',
'SA-08' => 'الحدود الشمالية',
'SA-09' => 'جازان',
'SA-10' => 'نجران',
'SA-11' => 'الباحة',
'SA-12' => 'الجوف',
'SA-14' => 'عسير',
);
return $states;
}
شرح الكود
- add_filter( ‘woocommerce_states’, ‘wa_add_saudi_arabia_states’ ): يربط الدالة الخاصة بك بفلتر WooCommerce الذي يدير قوائم الولايات.
- $states[‘SA’]: “SA” هو رمز الدولة السعودية في WooCommerce (من ISO 3166-1). نقوم بتعريف مصفوفة تحتوي على رموز المناطق كمفاتيح والأسماء العربية كقيم.
- return $states: يُرجع القائمة المعدلة لتظهر في حقل الولاية في صفحة الدفع.
بعد إضافة الكود، قم بتحديث الموقع واختبر صفحة إتمام الطلب. عند اختيار “المملكة العربية السعودية” كدولة، سيظهر قائمة منسدلة تحتوي على المناطق الـ13.
الخطوة 3: تخصيص إضافي (اختياري)
- ربط بالشحن: بعد إضافة المناطق، انتقل إلى WooCommerce > الإعدادات > الشحن > مناطق الشحن، وقم بإنشاء مناطق جديدة بناءً على هذه الولايات لتحديد معدلات شحن مختلفة.
نصائح وتحذيرات
- النسخ الاحتياطي: دائمًا قم بعمل نسخ احتياطي لموقعك قبل إضافة أي كود.
- التعارضات: إذا كان لديك إضافات أخرى تتدخل في الولايات (مثل إضافات الشحن السعودية)، قم بتعطيلها مؤقتًا للاختبار.
- اللغة: الكود يستخدم الأسماء العربية للتوافق مع الجمهور السعودي، لكن يمكن إضافة ترجمات إنجليزية إذا لزم الأمر.
بهذه الطريقة البسيطة، يمكنك تحسين تجربة المستخدمين في متجرك الإلكتروني، مما يزيد من دقة الشحن ويقلل من الأخطاء في إدخال البيانات. إذا كنت بحاجة إلى تخصيصات إضافية، مثل إضافة المدن أو ربط مع خدمات الشحن المحلية مثل البريد السعودي SPL أو SMSA أو Aramex، فكر في استشارة مطور محترف.