ووردبريس 7.2 يوقف وضع NO_BACKSLASH_ESCAPES في MySQL

أسطوانة قاعدة بيانات زجاجية يُنزع منها مفتاح مضيء، تعبيرًا عن ضبط sql_mode في ووردبريس 7.2

عمرك نقلت موقع لاستضافة جديدة، وفجأة عناوين فيها علامة اقتباس بقت تتحفظ غلط، أو بحث في الموقع بطّل يرجّع نتايج من غير أي رسالة خطأ؟ ساعات السبب مش في الكود بتاعك خالص، لكن في إعداد واحد على سيرفر MySQL اسمه sql_mode. ووردبريس 7.2، المنتظر في 8 ديسمبر 2026، بيقفل واحد من أخطر الإعدادات دي تلقائيًا.

ما هو وضع NO_BACKSLASH_ESCAPES ولماذا يضر ووردبريس؟

يمتلك خادم MySQL إعدادًا اسمه وضع SQL (SQL Mode)، وهو قائمة قواعد تحدد كيف يقرأ الخادم الاستعلامات. أحد هذه القواعد هو NO_BACKSLASH_ESCAPES.

يعتمد ووردبريس على الشرطة المائلة العكسية () بوصفها محرف هروب (Escape Character): حين يحفظ نصًا يحتوي علامة اقتباس، يضع قبلها حتى لا ينكسر الاستعلام. وتقول وثائق MySQL إن تفعيل هذا الوضع يجعل الشرطة العكسية «محرفًا عاديًا كأي محرف آخر»، فيضيع دورها كمحرف هروب.

النتيجة أن استعلامات ووردبريس التي تحتوي قيمًا مُهرَّبة قد تفشل أو تعيد بيانات خاطئة، دون رسالة واضحة تدلك على السبب.

ما الذي يتغير في ووردبريس 7.2؟

يحتفظ ووردبريس منذ الإصدار 3.9 بقائمة أوضاع لا يدعمها، ويزيلها من الجلسة عند كل اتصال بقاعدة البيانات عبر الدالة wpdb::set_sql_mode(). ضمت القائمة حتى الآن أوضاعًا مثل STRICT_ALL_TABLES وTRADITIONAL وANSI.

في ووردبريس 7.2 يُضاف NO_BACKSLASH_ESCAPES إلى هذه القائمة. هذه هي التفاصيل المهمة لك:

  • التغيير على مستوى الجلسة فقط: يُزال الوضع من اتصال ووردبريس بقاعدة البيانات، ولا تُمس إعدادات الخادم العامة.
  • مواقع أخرى على نفس الخادم لا تتأثر: لو عندك تطبيق آخر غير ووردبريس يعتمد على هذا الوضع، سيظل يعمل كما هو.
  • أغلب المواقع لن تلاحظ شيئًا: لأن معظم الاستضافات لا تفعّل هذا الوضع أصلًا.

بصراحة: هذا القسم قراءة لملاحظة المطورين الرسمية ووثائق MySQL، لم نختبر التغيير على نسخة تجريبية من 7.2 بعد. الفائدة الأكبر ستظهر على خوادم VPS التي يضبطها أصحابها بأنفسهم.

كيف تعرف هل استضافتك تفعّل هذا الوضع؟

قبل أن تقلق، افحص القيمة الفعلية على خادمك. افتح phpMyAdmin من لوحة الاستضافة (cPanel أو hPanel)، ثم اختر تبويب SQL ونفّذ:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

ووردبريس 7.2

افحص sql_mode في 4 خطوات

  1. افتح phpMyAdmin

    من لوحة الاستضافة، ثم تبويب SQL.

  2. نفّذ استعلام الفحص

    SELECT @@GLOBAL.sql_mode و @@SESSION.sql_mode

  3. ابحث عن NO_BACKSLASH_ESCAPES

    غير موجود؟ موقعك لن يتأثر بالتحديث.

  4. موجود؟ حدّث إلى 7.2

    وإذا احتجت الوضع فعلًا، أضف الفلتر في wp-content/db.php.

ابن موقعك قطعة قطعةarabcms.com
خطوات فحص وضع NO_BACKSLASH_ESCAPES قبل ووردبريس 7.2

إذا لم تظهر كلمة NO_BACKSLASH_ESCAPES في النتيجة، فموقعك خارج نطاق المشكلة ولن يتغير عليه شيء بعد التحديث. وإذا ظهرت، فالتحديث إلى 7.2 سيحل مشكلات الهروب تلقائيًا داخل ووردبريس.

ملاحظة: أغلب الاستضافات المشتركة المنتشرة عندنا في مصر والخليج لا تسمح لك بتغيير sql_mode العام أصلًا. لو ظهر الوضع مفعّلًا وأنت على استضافة مشتركة، اسأل الدعم الفني عن السبب بدل محاولة تعديله بنفسك.

متى تحتاج إلى إبقاء الوضع مفعّلًا؟ وكيف؟

الحالة نادرة: موقع ووردبريس يشارك قاعدة بياناته مع نظام آخر مكتوب على افتراض أن الشرطة العكسية حرف عادي. هنا يتيح ووردبريس الفلتر (Filter) incompatible_sql_modes لإخراج الوضع من قائمة الأوضاع المرفوضة:

add_filter( 'incompatible_sql_modes', function ( $modes ) {
    return array_diff( $modes, array( 'NO_BACKSLASH_ESCAPES' ) );
} );

النقطة التي يخطئ فيها كثيرون هي مكان وضع الكود. ووردبريس يتصل بقاعدة البيانات قبل تحميل الإضافات، لذلك لن يعمل الكود إذا وضعته في functions.php أو في إضافة عادية، ولا حتى في إضافة إلزامية (Must-use plugin)، لأنها كلها تُحمَّل متأخرة.

المكان الصحيح هو ملف الإضافة البديلة (Drop-in) المسمى db.php داخل مجلد wp-content.

تنبيه: بعض الإضافات تستخدم db.php بالفعل، مثل Query Monitor وبعض إضافات الكاش. افحص المجلد أولًا، وإذا وجدت الملف فأضف الكود إليه بحذر بدل استبداله، وخذ نسخة احتياطية قبل أي تعديل.

في ووردبريس: تذكر أن نواة ووردبريس نفسها قد لا تعمل بشكل صحيح مع هذا الوضع مفعّلًا. لا تستخدم الفلتر إلا إذا كان عندك سبب تقني واضح وتعرف ما يعتمد عليه.

ماذا تفعل الآن على مواقع عملائك؟

لو بتدير مواقع لعملاء، التحديث ده فرصة لمراجعة سريعة:

  1. افحص sql_mode على كل خادم VPS تديره بنفسك، خاصة الخوادم التي ضبطتها يدويًا أو نقلتها من مزود آخر.
  2. راجع مجلد wp-content بحثًا عن ملف db.php، واعرف أي إضافة وضعته.
  3. جرّب ووردبريس 7.2 على نسخة تجريبية (Staging) قبل التحديث على الموقع الحي، كما تفعل مع أي إصدار رئيسي.

الأسئلة الشائعة

س: هل سيؤثر هذا التغيير على موقعي بعد التحديث؟
ج: في الغالب لا. التغيير يمس فقط المواقع التي تعمل على خوادم تفعّل NO_BACKSLASH_ESCAPES، وحتى هذه ستعمل بشكل أصح بعد التحديث.

س: هل يغيّر ووردبريس إعدادات MySQL على الخادم؟
ج: لا. التعديل يحدث على جلسة اتصال ووردبريس وحدها، وتبقى الإعدادات العامة للخادم كما هي.

س: لماذا لا يعمل فلتر incompatible_sql_modes في functions.php؟
ج: لأن ووردبريس يتصل بقاعدة البيانات ويضبط sql_mode قبل تحميل القالب والإضافات. لذلك يجب وضع الكود في wp-content/db.php.

س: متى يصدر ووردبريس 7.2؟
ج: الموعد المعلن هو 8 ديسمبر 2026 وفق جدول فريق الإصدار، وقد يتغير الموعد قبل الإطلاق.

الخلاصة

يضيف ووردبريس 7.2 الوضع NO_BACKSLASH_ESCAPES إلى قائمة أوضاع SQL التي يلغيها في اتصاله بقاعدة البيانات، فتختفي فئة كاملة من الأعطال الغامضة على الخوادم التي تفعّله. معظم المواقع لن تلاحظ فرقًا، ومن يحتاج الوضع فعلًا يستطيع إبقاءه عبر فلتر في db.php.

خلاصة الكلام: افحص sql_mode على سيرفراتك النهارده، ولو لقيت الوضع ده شغال، استنى 7.2 وهو هيريحك.

مراجع إضافية: MySQL Reference Manual: Server SQL Modes، incompatible_sql_modes – WordPress Developer Resources

مرجع المقال (بالإنجليزية): NO_BACKSLASH_ESCAPES SQL mode is now turned off by default in WordPress 7.2
المقال ده مش ترجمة حرفية: متكيّف للقارئ العربي ومضاف عليه سياق ووردبريس وElementor وJetEngine.

اترك تعليقاً