- الحالة
- محلولة
- تم حلها في
- 4.0.0
نظرة عامة على المشكلة
قبل 4.0.0، حاول WPML جعل الشرطة المائلة الختامية تتطابق مع عنوان URL الوارد أثناء التحويل. لسوء الحظ، لا يتناسب هذا المنطق مع جميع الحالات.
بدءاً من 4.0.0، سيتطابق عنوان URL المحوّل مع السلوك القياسي لـ WordPress وهو كالتالي:
- عندما لا يوجد مسار ولا استعلام، سيحاول WPML مطابقة عنوان URL الوارد (على سبيل المثال http://wpml.com => http://wpml.fr، أو http://wpml.com/ => http://wpml.fr/). ومع ذلك، يُخرج WordPress عادةً عنوان URL للصفحة الرئيسية بدون أي شرطة مائلة ختامية.
- عندما لا يوجد مسار ولكن يوجد استعلام، سيكون لدينا دائماً شرطة مائلة ختامية (على سبيل المثال http://wpml.com?foo=bar => http://wpml.fr/?foo=bar).
- عندما يكون لدينا مسار (وليس ملفاً)، تعتمد الشرطة المائلة الختامية على تنسيق الرابط الدائم.
- عندما يكون لدينا مسار يشير إلى ملف، يجب عدم إضافة شرطة مائلة ختامية (بغض النظر عن تنسيق الرابط الدائم). مثال: http://wpml.com/wp-content/uploads/hello.csv.
حل بديل مؤقت
قد يكون لهذا التغيير بعض الآثار الجانبية غير المتوقعة في القوالب أو إضافات الأطراف الخارجية.
ننصح بشدة بتجنب دمج السلاسل النصية لبناء عناوين URL واستخدام دوال مثل:
- add_query_arg لبناء استعلام URL.
- http_build_url إذا كانت هذه الدالة متوفرة على الخادم (ومع ذلك، يوفّر WPML بديلاً polyfill).
- trailingslashit، untrailingslashit لإضافة أو إزالة الشرطات المائلة الختامية.
على سبيل المثال، الكود التالي:
$url = get_home_url() . '/' . $path;
يجب استبداله بما يلي:
$url = trailingslashit( get_home_url() ) . $path;