WPML
الحالة
محلولة
أُبلغ عنها لـ
Advanced Custom Fields Multilingual 2.1.2
تم حلها في
Advanced Custom Fields Multilingual 2.1.3
الإضافة/القالب ذو الصلة
Advanced Custom Fields (ACF)
وسوم الموضوع
ATE, Bug, Compatibility

نظرة عامة على المشكلة

إذا كنت تستخدم إضافة Advanced Custom Fields لتسجيل أنواع المنشورات المخصصة أو التصنيفات المخصصة، فقد تواجه خطأً فادحاً في البيئات التي تستخدم PHP 8 أو تحذيرات في PHP 7، عند وجود بيانات تالفة مخزنة لأي من هذه الكائنات:


PHP Fatal error:  Uncaught TypeError: array_walk(): Argument #1 ($array) must be of type array, null given in .../wp-content/plugins/acfml/classes/Strings/Helper/ContentTypeLabels.php:55

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.

الخيار 1


بينما تكون إضافة Advanced Custom Fields Multilingual معطلة، عدّل نوع المنشور أو التصنيف الذي يواجه المشكلة في ACF وعيِّن القيم المفقودة للتسميات أو المعرّف النصي للرابط الخاص بالعنصر، ثم احفظه. بعد ذلك، فعّل إضافة Advanced Custom Fields Multilingual وسيعمل كل شيء بشكل صحيح.

الخيار 2

  • افتح الملف …/wp-content/plugins/acfml/classes/Strings/Helper/ContentTypeLabels.php.
  • ابحث عن السطر 53.
  • استبدل:
    array_walk( $objectArgs['labels'], function( &$value, $key ) use ( $translatedLabels ) {
    	$value = Obj::propOr( $value, $key, $translatedLabels );
    } );
  • بـ:
    $labels = Obj::propOr( [], 'labels', $objectArgs );
    array_walk( $labels, function( $value, $key ) use ( &$objectArgs, $translatedLabels ) {
    	$objectArgs['labels'][ $key ] = Obj::propOr( $value, $key, $translatedLabels );
    } );

جميع المشاكل المعروفة →