اذهب إلى المحتوى

تبدأ عملية تنقيح الأخطاء باستخدام الثابت 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);

js-and-css-core.jpg

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

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

define('SAVEQUERIES', true);

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

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

Query Monitor

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

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

Debug Bar

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

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

Debug This

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

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

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

الخلاصة

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

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

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...