قد يكون التعامل مع الأخطاء الحرجة في WordPress أمرًا شاقًا، خاصةً عندما توفر المنصة القليل من السياق حول مصدر المشكلة. في هذه المقالة، سأرشدك عبر دليل خطوة بخطوة لتشخيص هذه الأخطاء وإصلاحها، وضمان عودة موقع WordPress الخاص بك إلى العمل بسلاسة.
ما الذي يسبب أخطاء حرجة في WordPress؟
غالبًا ما تنشأ أخطاء WordPress الحرجة نتيجة لتعارضات بين السمات أو المكونات الإضافية أو التعليمات البرمجية المخصصة، مما يؤدي إلى مشكلات مثل استنفاد الذاكرة أو فشل اتصال قاعدة البيانات أو أخطاء PHP. تحدث هذه التعارضات عادةً بسبب التحديثات غير المتوافقة أو الوظائف القديمة أو السمات والمكونات الإضافية التي تم برمجتها بشكل سيئ. يمكن أن تكون أخطاء تكوين الخادم، مثل الموارد غير الكافية أو أذونات الملفات غير الصحيحة، أيضًا مسؤولة عن هذه الأخطاء الحرجة.
تحدث مثل هذه الأخطاء بشكل متكرر بعد التغييرات الأخيرة التي تطرأ على موقعك، مثل تثبيت مكون إضافي أو سمة جديدة، أو تحديث ملفات WordPress الأساسية، أو تعديل تكوين الخادم. لحل هذه المشكلات، تتضمن عملية تصحيح الأخطاء عادةً التحقق من سجلات الأخطاء، أو تعطيل المكونات الإضافية، أو التراجع عن التغييرات الأخيرة لتحديد السبب الجذري ومعالجته.
دليل شامل لإصلاح الأخطاء الحرجة في WordPress
ابدأ بفحص سجلات الأخطاء لتحديد المكونات التي تسبب المشكلات. عادةً ما يبلغ WordPress عن الأخطاء بتنسيق مثل هذا:
[22-Aug-2024 14:32:18 UTC] PHP Fatal error: Uncaught Error: Call to undefined function non_existent_function() in /wp-content/plugins/example-plugin/includes/class-example-plugin.php:123
Stack trace:
#0 /wp-content/plugins/example-plugin/example-plugin.php(45): Example_Plugin->init()
#1 /wp-includes/class-wp-hook.php(312): Example_Plugin::start('')
#2 /wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters(NULL, Array)
#3 /wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#4 /wp-settings.php(617): do_action('init')
#5 /wp-config.php(90): require_once('/path/to/wp-set...')
#6 /wp-load.php(37): require_once('/path/to/wp-con...')
#7 /wp-blog-header.php(13): require_once('/path/to/wp-loa...')
#8 /index.php(17): require('/path/to/wp-blo...')
#9 {main}
thrown in /wp-content/plugins/example-plugin/includes/class-example-plugin.php on line 123
عادةً، يمكن قراءة المكون المسبب للمشكلات من سجل الأخطاء كما هو موضح أعلاه.
إذا لم تتمكن من تحديد سجلات الأخطاء أو كنت تفضل عدم البحث فيها، فيمكنك استخدام أوامر WP-CLI لتشغيل الخطأ الحرج ومراقبة الناتج. على سبيل المثال:
$ wp plugin list
بعد تحديد المكون الإضافي المسبب للخطأ، يمكنك تعطيله بسهولة عن طريق تشغيل أمر WP-CLI التالي:
$ wp plugin disable <example-plugin> --skip-plugins
لاحظ --skip-plugins
وهو أمر ضروري لتجاوز تنفيذ مكونات WordPress الإضافية أثناء فحصنا.
في حالات نادرة، قد لا يشير WordPress بشكل مباشر إلى المكون الإضافي أو المكوّن المسؤول عن المشكلة. في مثل هذه الحالات، ستحتاج إلى إلغاء تنشيط المكونات الإضافية واحدًا تلو الآخر لتحديد المكونات الإضافية التي تسبب المشكلة.
إليك البرنامج النصي الذي يمكنك استخدامه لأتمتة هذه العملية:
$ activated_plugins=$(wp plugin list --status=active --field=name --skip-plugins); wp plugin deactivate --all --skip-plugins; last_activated=""; for plugin in $activated_plugins; do wp plugin activate "$plugin"; last_activated="$plugin"; if ! wp plugin list > /dev/null 2>&1; then wp plugin deactivate "$last_activated" --skip-plugins && echo "The plugin $last_activated was causing a fatal error. Now deactivated"; fi; done; echo "Plugin activation process completed."
سيقوم هذا البرنامج النصي بإدراج جميع المكونات الإضافية النشطة حاليًا، وإلغاء تنشيطها، ثم إعادة تنشيطها واحدة تلو الأخرى. سيستمر ذلك حتى حدوث خطأ حرج مرة أخرى، مما يساعد في تحديد المكون الإضافي الذي يسبب المشكلة. بمجرد تحديد المكونات الإضافية التي تسبب المشكلة، سيتم تخطيها، بينما تتم إعادة تنشيط المكونات الإضافية المتبقية.
في بعض الأحيان، قد تنشأ أخطاء حرجة أيضًا من قالب موقعك النشط.
[22-Aug-2024 14:32:18 UTC] PHP Fatal error: Uncaught Error: Call to undefined function get_header() in /wp-content/themes/example-theme/page.php:12
Stack trace:
#0 /wp-includes/template-loader.php(106): include()
#1 /wp-blog-header.php(19): require_once('/path/to/wp-includes/template-loader.php')
#2 /index.php(17): require('/path/to/wp-blog-header.php')
#3 {main}
thrown in /wp-content/themes/example-theme/page.php on line 12
لاحظ أن مسار الخطأ هو /wp-content/themes/example-theme/
في مثل هذه الحالات، يمكنك حل المشكلة بالتبديل إلى أحد القوالب الافتراضية لـ WordPress:
$ wp theme activate twentytwentyfour --skip-themes
لاحظ في الأمر أعلاه أننا استخدمنا --skip-themes
لتجنب تنفيذ كود القالب أثناء الفحص.
هل تبحث عن تجربة ووردبريس خالية من الأخطاء؟
استمتع بنقل سلس للموقع مجانًا واكتشف قوة توصيل CDN السريع للغاية، بدعم من الخبراء على مدار الساعة طوال أيام الأسبوع.

أرى خطأ في ملفات WordPress الاساسية!
في حالات نادرة، قد ينشأ خطأ حرج من ملف أساسي في WordPress، مما يشير إلى أن تثبيت WordPress الخاص بك ربما تم تعديله مسبقًا، ربما بواسطة مطور موقعك:
[22-Aug-2024 14:32:18 UTC] PHP Fatal error: Uncaught Error: Call to undefined function wp_get_current_user() in /wp-includes/class-wp-user.php:123
Stack trace:
#0 /wp-includes/class-wp-user.php(123): wp_get_current_user()
#1 /wp-includes/pluggable.php(75): WP_User->get()
#2 /wp-includes/user.php(273): wp_set_current_user(1)
#3 /wp-includes/plugin.php(458): wp_set_current_user()
#4 /wp-includes/class-wp-hook.php(287): do_action('init')
#5 /wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array)
#6 /wp-includes/plugin.php(465): WP_Hook->do_action(Array)
#7 /wp-settings.php(615): do_action('init')
#8 /wp-config.php(90): require_once('/path/to/wp-set...')
#9 /wp-load.php(37): require_once('/path/to/wp-con...')
#10 /wp-blog-header.php(13): require_once('/path/to/wp-loa...')
#11 /index.php(17): require('/path/to/wp-blo...')
#12 {main}
thrown in /wp-includes/class-wp-user.php on line 123
لا يُنصح أبدًا بتعديل ملفات WordPress الأساسية ما لم تكن متأكدًا حقًا مما تفعله أو كان مطور موقع الويب الخاص بك مستعدًا للتدخل وحل أي أخطاء قد تظهر. إذا لم يحدث ذلك، فيمكنك استعادة ملفات WordPress الأساسية:
$ wp core download --force --version=<your_wordpress_version>
إذا كنت بحاجة إلى معرفة إصدار WordPress الحالي لديك، فيمكنك استخدام هذا:
$ wp core version
ماذا لو كنت أتلقى أخطاء حد الذاكرة؟
في مثل هذه الحالة، ستلاحظ في السجلات أن WordPress يعاني من نفاد الذاكرة:
[22-Aug-2024 11:22:10 UTC] PHP Fatal error: Allowed memory size of 256M bytes exhausted (tried to allocate 32 bytes) in /wp-includes/class-wp-query.php on line 2034
يمكن إصلاح هذه الأخطاء بسهولة عن طريق زيادة حد ذاكرة WordPress. للقيام بذلك، ما عليك سوى إضافة ما يلي إلى wp-config.php
:
define('WP_MEMORY_LIMIT', '512M');
في المثال أعلاه، كان WordPress ينفد من 256M
لذلك قمنا بزيادة حد الذاكرة إلى 512M
إذا استمرت الأخطاء، يمكنك زيادة الحد الأقصى بشكل أكبر. تأكد من إضافة هذا قبل هذا السطر:
/* That's all, stop editing! Happy blogging. */
اترك تعليقاً