تبدأ عملية تصحيح الأخطاء باستخدام الثابت WP_DEBUG وتُصبح أكثر عمقًا كلما كانت عملية التصحيح أكثر تعقيدًا، وسوف نتكلم عن النقاط التالية في هذا المقال:

  1. كيفية كتابة رسائل الخطأ في سجل وتحديد مسار هذا السجل.
  2. تعلُّم كيفية استخدام ملفات جافا سكربت وCSS للنظام بهدف تصحيح الأخطاء.
  3. كيفية تسجيل جميع استعلامات SQL التي تعمل في الصفحة.
  4. التعرف على بعض الإضافات الممكن أن تُساعد في عملية تصحيح الأخطاء.

كتابة رسائل الأخطاء في ملف التسجيل

تبدأ عملية تصحيح الأخطاء بالتوجُّه إلى ملف wp-config.php في مسار تثبيت ووردبريس وتفعيل نمط تصحيح الأخطاء.

define( 'WP_DEBUG', true );

عند تغيير هذا الثابت ‘WP_DEBUG’ من false إلى true، فسوف تظهر جميع أخطاء وملاحظات وتحذيرات PHP على الشاشة، ويُنصح بتفعيل هذه الخاصية في مرحلة التطوير كونها تُظهر أخطاء الشيفرة البرمجية في هذه المرحلة، مما يُساعد على إصلاحها مباشرةً؛ ولكن إذا كان المطلوب التحقق من وجود أخطاء في موقعٍ نشطٍ وله مستخدمون، فإن إظهار هذه الأخطاء لهم هو آخر ما تريد عمله وذلك لسببين، أولهما أنها تُسرب معلومات عن الموقع، والثاني أنها تُصّعب عملية تصفُّح الموقع على المستخدم. وبالتالي للاطلاع على الأخطاء في موقعٍ انتهى من مرحلة التطوير وأصبح في حالة عمل، فلا بد من وجود وسيلةٍ لتحقيق ذلك دون مشاركتها مع زوار الموقع وهنا يأتي دور الثوابت الأخرى الممكن استخدامها في ملف wp-config.php.

مقدمة عن ثوابت إظهار الأخطاء والتحذيرات

يتضمن توثيق ووردبريس حلًا لهذه المشكلة تحت عنوان How to debug WordPress، حيث يمكن كتابة الأخطاء الناتجة في ملف التسجيل بعد تفعيل الثابت WP_DEBUG ثم الثابت WP_DEBUG_LOG، إذ يُنشئ ووردبريس تلقائيًا هذا الملف حالما يظهر خطأ أو تحذير أو ملاحظة في PHP؛ أما بالنسبة لموقع الملف فسوف يكون ضمن مجلد wp-content.

ما زالت الأخطاء والتحذيرات تظهر على الشاشة رغم تسجيلها الآن ضمن سجلٍ للأخطاء، لذا لا بد من استخدام ثابت آخر هو WP_DEBUG_DISPLAY وإسناد القيمة false له لتتوقف بذلك رسائل الأخطاء عن الظهور على شاشات المستخدمين.

// Disable display of errors and warnings
define('WP_DEBUG_DISPLAY', false);

أصبحت مجموعة التعليمات التي علينا استخدامها لإرسال الأخطاء للسجل ومنعها من الظهور على الشاشة على النحو التالي:

// Enable WP_DEBUG mode

define(‘WP_DEBUG’, true);

 

// Enable Debug logging to the /wp-content/debug.log file

define(‘WP_DEBUG_LOG’, true);

 

// Disable display of errors and warnings

define(‘WP_DEBUG_DISPLAY’, false);

سوف نحتاج في بعض الأحيان إلى إضافة التعليمة التالية لمنع الأخطاء من الظهور على الشاشة، وذلك إذا كان ملف php.ini ضمن الخادم يحتوي على الثابت display_errors وقيمته 1.

@ini_set('display_errors',0);

عدم الاستفادة من استخدام تعليمة تحديد الخطأ أو كتابة رسائلك الخاصة في ملف التسجيل

تُعد تعليمتا echo وvar_dump من أكثر الطرق استخدامًا لتحديد موقع خطأ ضمن شيفرة برمجية، ولكن في بعض الأحيان لا يُمكن استخدام هاتين التعليمتين، فمثلًا عند إنشاء أداة Widget وحصول مشكلةٍ ما خلال عملية الحفظ، فلن تُظهر تعليمة echo شيئًاعلى الشاشة، وذلك لأن عملية الحفظ تستخدم AJAX لتحديث الجزئية التي تريد استخدام echo فيها، وفي أحيانٍ أخرى يكون السبب لعدم عمل echo غير معروف حيث يظهر خطأ PHP ليحول دون تحديث الصفحة وظهور محتوى تعليمة echo، وفي كلا الحالتين السابقتين، ستكون النتيجة واحدة ويجب استخدام طريقةٍ أخرى لتتبع المشكلة وعرض قيم المتغيرات المُحتمل أن تكون سببًا الخطأ.

يكمن الحل في تفعيل wp-debug وwp_debug_log ضمن ملف wp-config.php وإسناد قيمة true لكليهما، فهذا يُنشئ سجلًا ضمن مجلد wp-content يتضمن أخطاء وملاحظات وتحذيرات PHP.

كيفية تسجيل المتغيرات في سجل الأخطاء نيابة عن استخدام تعليمة تحديد الخطأ

الآن وبدلًا من تسجيل المتغيرات على الشاشة باستخدام التعليمة echo، سوف نُسجلها ضمن سجل الأخطاء باستخدام التعليمة error_log، لذلك بدلًا من كتابة:

echo "I'm on line 38";

عليك كتابة:

error_log("I'm on line 38");

كيفية تسجيل المتغيرات في سجل الأخطاء نيابة عن التحقق من قيمها

من أجل التحقق من قيم متغيراتٍ محددة كما تفعل الدالة var_dump وحفظ القيمة الناتجة ضمن سجل الأخطاء، وبفرض عدم وجود سلسلة خاطئة أو حتى أية سلسلةٍ على الإطلاق، فلا بد من استخدام التعليمات التالية:

$x = “My string”;

// Dump x, or any other variable for that matter

ob_start();

var_dump($x);

$contents = ob_get_contents();

ob_end_clean();

error_log($contents);

تحويل تعليمات تصحيح الأخطاء السابقة إلى دالة

يُفضّل تحويل التعليمات السابقة إلى دالة لعدم الاضطرار إلى كتابتها في كل مرة وهذا أمرٌ مفيدٌ خاصةً عند تطوير قالب، حيث يمكن حفظ الدالة ضمن ملف functions.php أو حفظها ضمن ملفات الإضافة Plugin الخاصة بك إن كنت تعمل على تطويرها، كما يجب أن تتضمن هذه الدالة مُدخلًا وهو المتغير الذي سوف تُنقل قيمته إلى سجل الأخطاء.

مدخلات إضافية لتعليمة تسجيل الأخطاء

تقبل تعليمة error_log ثلاث مُدخلات إضافية اختيارية، ويُمكن استخدام المُدخلة الثانية message_type$ مع الثالثة destination$ وفي بعض الأحيان مع الرابعة extra_headers$ لتعريف موقعٍ إضافي لتسجيل الأخطاء ضمن سجل.

المزيد من إمكانيات تصحيح الأخطاء

توجد المزيد من التعليمات الممكن استخدامها ضمن ملف wp-config.php للمساعدة في عملية تتبع وتصحيح الأخطاء في ووردبريس.

إمكانية تصحيح الخطأ في السكربت

من المحتمل مواجهة بعض المشاكل مع ملفات جافا سكريبت وCSS التي تنتمي إلى ملفات تثبيت ووردبريس، ويجب البحث عن الأخطاء ضمن هذه الملفات أو إدخال بعض تعليمات console.log أو اتباع طرقٍ أخرى لتتبع الأخطاء.

يُحمِّل ووردبريس ملفاته بفعالية فهو يستخدم نسخًا مُصغرة من ملفات جافا سكريبت وCSS وهذا ما يزيد من صعوبة تصحيح الأخطاء المرتبطة بهذه الملفات، ولكن لحسن الحظ فإن ووردبريس مُجّهز بصورةٍ جيدة لمثل هذه الحالات، حيث تتضمن ملفاته نُسخًا غير مصغرة من ملفات جافا سكريبت وCSS، ومن أجل إجبار ووردبريس على استخدامها؛ يجب إعطاء قيمة true للثابت SCRIPT_DEBUG ضمن ملف wp-config.php.

define('SCRIPT_DEBUG', true);

حفظ الاستعلامات

سوف نحتاج أيضًا لتصحيح أخطاء قاعدة البيانات عند استغراق أحد الاستعلامات وقتًا أكثر من اللازم أو عندما يُعيد الاستعلام نتائجًا خاطئةً أو لأسبابٍ أخرى. أولى خطوات حل المشاكل السابقة هي إلقاء نظرةٍ على الاستعلامات التي تعمل عند تحميل صفحةٍ ما، لذلك من المُفيد تفعيل الثابت SAVEQUERIES ضمن ملف wp-config.php في مثل هذه الحالات لتُحفظ جميع الاستعلامات، إضافةً إلى معلوماتٍ عن مدة تنفيذها والدالة التي استدعتها، وتُحفظ جميع هذه المعلومات في متغيرٍ شاملٍ هو wpdb->queries$.

define('SAVEQUERIES', true);

تصحيح الأخطاء باستخدام الإضافات

توجد مجموعة من الإضافات التي تُساعد في عملية تصحيح الأخطاء وتتبُعها إلى جانب ما يٌقدمه ووردبريس، وهي تٌقدم معلومات أكثر مما يُقدمه سجل أخطاء ووردبريس، كما أن طريقة عرضها لهذه المعلومات أسهل للمتابعة. الإضافات التالية هي الأفضل في هذا المجال ويوجد تحت كل إضافة الوصف الخاص بها كما هو من مستودع ووردبريس.

مراقب الاستعلام Query Monitor

وصف مراقب الاستعلام: هي مجموعة أدوات تطوير ووردبريس تسمح بتصحيح أخطاء استعلامات قاعدة البيانات وأخطاء PHP والخطّافات والإجراءات وكتل محرر الكتل والنصوص البرمجية، إلى جانب نداءات HTTP API ونداءات AJAX ونداءات REST API وغير ذلك، حيث تعرض معلوماتها بعد تجميعها ضمن مجموعاتٍ خاصة بكل إضافة أو قالب، أو حسب الدوال المسؤولة عنها، وتُضيف قائمة شريط أدواتٍ للمدير تعرض ضمنه ملخصًا عن الصفحة الحالية مع معلومات تصحيح الأخطاء الكاملة الموضحة في اللوحات.

معلوماتٌ أخرى: تمتلك هذه الإضافة أكثر من 100000 تثبيتٍ نشطٍ لها كما أنها مدعومة بصورةٍ جيدة وتمتلك تقييمًا بخمس نجوم، وقد طُوّرت من قِبل جون بلاكبورن وهو مساهِم قديم في تطوير ووردبريس.

شريط التصحيح Debug Bar

وصف شريط التصحيح: يُضيف قائمةً لتصحيح الأخطاء ضمن شريط المدير الذي يعرض الاستعلامات، والذاكرة المخبئية cache، ومعلومات مفيدة أخرى. تتبِّع هذه الإضافة عند تفعيل WP_DEBUG تحذيرات وملاحظات PHP لتسهيل الوصول إلى الأخطاء، كما أنها تتبِّع وتعرض الاستعلامات عند تفعيل SAVEQUERIES.

معلوماتٌ أخرى: تمتلك هذه الإضافة أكثر من 3000 تثبيتٍ نشطٍ وتقييمًا بأربع نجوم اعتمادًا على 59 مراجعة، كما أنها طُورت من قِبل أكثر من 10 مساهمين ومطورين.

تصحيح الأخطاء Debug This

وصف تصحيح الأخطاء: توفِّر معلوماتٍ عن تثبيت ووردبريس من خلال شريط المدير من خلال الكائن الحالي WP_Query ومعلومات المدونة وخياراتها والملفات التي عولجت ضمن HTML (الصور وCSS وملفات جافا سكربت) وأحجام الصور والمتغيرات الشاملة والثوابت والقوائم وإحصاءات الذاكرة المخبئية cache للكائن، إلى جانب الإضافات والإضافات التي يجب استخدامها والاستعلامات ومعلومات الخادم وPHP ومرفقات المنشور وأنواع المنشورات والسكربتات والأنماط المُدرجة ضمن قائمة الانتظار، وكذا الأشرطة الجانبية والأدوات وغيرها.

يُمكن تفعيل إضافاتٍ لها باستخدام شيفرةٍ برمجية يمكن الاطلاع عليها في صفحة الإضافة ضمن مستودع ووردبريس.

معلوماتٌ أخرى: تمتلك هذه الإضافة أكثر من 5000 تثبيت نشط ولا توجد أي مشاكل لها ضمن قسم الدعم للعام الماضي، كما حصلت على تقييم 4.5 نجمة بناءً على 15 مراجعة وطُوّرت من قِبل 4 مطوّرين متخصصين في تطوير الإضافات والقوالب منذ زمن.

الخلاصة

يُلخص هذا المقال الأدوات المبنية ضمن ووردبريس والممكن استخدامها لتتبع الأخطاء وحلّها، كما أنه يُقدم أفضل الإضافات التي تُساعد على أداء هذه المهمة.

ترجمة -وبتصرّف- للمقال How to Debug WordPress Beyond the Basics لصاحبه Lea Cohen.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.