خطأ لم يتم اكتشافه في WordPress: استدعاء لحل وظيفة create_function() غير المحددة

هل كنت كذلكWordPressرسالة خطأ"Uncaught Error: Call to undefined function create_function() in SNIPPET:62"نظرا للصداع؟"

في الواقع هذه المشكلة ليست صعبة الحل، فلنتحدث الآن بالتفصيل عن سبب حدوث هذه المشكلة وكيفية حلها بكود بسيط وفعال.

لماذا أحصل على أخطاء create_function؟

القليل من المعرفة الأساسية أولاً. في PHP 7.2،create_function()لقد تم إهمالها، وفي PHP 8.0، تمت إزالة هذه الوظيفة مباشرة. بمعنى آخر، إذا تمت ترقية خادمك إلى PHP 7.2 أو أعلى ولا يزال يستخدم التعليمات البرمجية القديمة، فستحدث هذه المشكلة.

لكن جوهر المشكلة هو:create_functionإنه نتاج عصر قديم. لا تكمن المشكلة في أنه لم يعد مدعومًا فحسب، بل إنها تؤدي أيضًا إلى ضعف الأداء والمخاطر الأمنية المحتملة. الحل الجديد هو الاستخداموظيفة مجهولة(وظائف مجهولة).

تعديل الكود: حل خطأ create_function

خطأ لم يتم اكتشافه في WordPress: استدعاء لحل وظيفة create_function() غير المحددة

الآن دعونا نرى كيفية استبدال الكود القديم. فيما يلي خطة تعديل الكود المحددة:

الكود الأصلي

//彻底禁止WordPress缩略图
add_filter( 'add_image_size', create_function( '', 'return 1;' ) );

//自定义登录页面的LOGO链接为首页链接
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));

الكود المعدل

// 彻底禁止 WordPress 缩略图
add_filter( 'add_image_size', function() { return 1; } );

// 自定义登录页面的 LOGO 链接为首页链接
add_filter( 'login_headerurl', function() { return get_bloginfo('url'); } );

شرح الكود:

  • function() { return 1; } هي وظيفة مجهولة لا تتطلب أي معلمات وإرجاع 1.
  • get_bloginfo('url') إنها وظيفة تقوم بإرجاع عنوان الصفحة الرئيسية لموقع الويب، كما نقوم بتغليفها بوظيفة مجهولة.

النهج الأفضل: التعامل مع تعطيل الصورة المصغرة بحذر

في بعض الأحيان لا يكون تعطيل الصور المصغرة لـ WordPress بشكل كامل هو الخيار الأفضل. إذا كانت بعض السمات أو المكونات الإضافية تتطلب صورًا بحجم معين، فقد يؤدي تعطيلها تمامًا إلى حدوث مشكلات غير متوقعة.

إليك حل أكثر مرونة: قم بتعطيل أحجام الصور غير الضرورية بشكل انتقائي عبر المرشحات.

رمز العينة

add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
    unset( $sizes['thumbnail'] ); // 禁用缩略图
    unset( $sizes['medium'] );    // 禁用中等大小
    unset( $sizes['large'] );     // 禁用大图
    return $sizes;
} );

لا يحل هذا الأسلوب المشكلة فحسب، بل يحافظ أيضًا على التوافق مع ميزات معينة.

تعديل التعليمات البرمجية

أضف الكود المعدل إلى أحد المواقع التالية:

  1. من الموضوع الحالي functions.php ملف.
  2. مكون إضافي للوظيفة المخصصة (طريقة موصى بها لتجنب تغطية التعليمات البرمجية بتحديثات السمات).

ماذا أفعل إذا استمر الخطأ بعد تعديل الكود؟

إذا تم تمكين المكون الإضافي Fluent-Snippet-storage ولا تزال هناك أخطاء بعد التعديل، فقد يكون في وضع التشغيلfluent-snippet-storage/index.phpتوجد ذاكرة تخزين مؤقت فيه، ويجب حذف رمز الخطأ الخاص بملفات الخطأ.

اكتشافwp-content/fluent-snippet-storage/index.phpقم بالتمرير للأسفل حتى النهاية، وابحث عن كود مشابه لما يلي:

'error_files' => 
array (
'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',
),
);

رمز لحذف سجلات الأخطاء هذه:

'1-e7a7bbe999a4wordpresse5a4b4e983a8e697a0e794a8e4bfa1e681af.php' => 'Uncaught Error: Call to undefined function create_function() in SNIPPET:62',

نصيحة إضافية: تأكد من توافق التعليمات البرمجية

قبل تعديل الكود، يوصى بعمل نسخة احتياطية من ملفات الموقع وقاعدة البيانات. يمكنك استخدام المكونات الإضافية (مثل UpdraftPlus) لإكمال عمليات النسخ الاحتياطي بسرعة وتجنب التعرض للمفاجأة عندما يحدث خطأ ما.

في الوقت نفسه، إذا لم تكن على دراية بـ PHP، فمن المستحسن محاولة تعديل التعليمات البرمجية في بيئة الاختبار بدلاً من تشغيل بيئة الإنتاج مباشرة.

يعد تحسين الكود بمثابة معركة مستمرة

يبدو هذا السؤال بسيطًا، لكنه في الواقع مشكلة شائعة يجب مواجهتها في تطوير موقع الويب:توافق الكود القديم مع البيئة الجديدة. سواء كان الأمر يتعلق بترقية إصدار PHP أو تحسين وظائف WordPress، فكلها مصممة لجعل موقع الويب يعمل بشكل أكثر كفاءة وأمانًا.

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

ملخص

  1. create_function() لم يعد مدعومًا في PHP 7.2 وما فوق، ويوصى باستخدام وظائف مجهولة بدلاً من ذلك.
  2. بعد تعديل الكود، سيكون موقع الويب الخاص بك أكثر كفاءة وأمانًا.
  3. للحصول على توافق أفضل مع المكونات الإضافية والموضوعات، قد يكون تعطيل أحجام الصور بشكل انتقائي حلاً أفضل.
  4. لا يقتصر تحسين الكود على إصلاح المشكلات فحسب، بل يعد أيضًا خطوة نحو تحسين جودة موقع الويب الخاص بك.

إذا واجهت مشكلات مماثلة، فقد ترغب في تجربة الحلول الواردة في هذه المقالة.

مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ ) تمت مشاركته بواسطة "خطأ لم يتم اكتشافه في WordPress: قد يكون الاتصال بوظيفة غير محددة create_function() Solution" مفيدًا لك.

مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-32407.html

لاكتشاف المزيد من الحيل المخفية🔑، مرحبًا بك في الانضمام إلى قناتنا على Telegram!

مشاركة ومثل إذا كنت ترغب في ذلك! مشاركاتك وإعجاباتك هي حافزنا المستمر!

 

发表 评论

لن يتم نشر عنوان بريدك الإلكتروني. 必填 项 已 用 * 标注

انتقل إلى الأعلى