نظرة عامة على المشكلة
إذا كان لديك نموذج بمربعات اختيار تم إنشاؤه بواسطة إضافة WPForms ويعمل على خادم PHP 8x، فلن يعمل عند محاولة إرساله. بدلاً من ذلك، سيظهر لك هذا الخطأ الفادح:
[14-Feb-2023 18:43:45 UTC] PHP Fatal error: Uncaught TypeError: array_key_exists(): Argument #1 ($key) must be a valid array offset type in …/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php:98Stack trace: #5 …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php(191): WPML\FP\Obj::__callStatic('propOr’, Array)#6 [internal function]: WPML\Forms\Hooks\WpForms\Strings->WPML\Forms\Hooks\WpForms\{closure}(Array, 44)#17 …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php(197): WPML\FP\Obj::__callStatic('over’, Array)#18 …/wp-includes/class-wp-hook.php(308): WPML\Forms\Hooks\WpForms\Strings->translateEntry(Array, Array)
حل بديل مؤقت
تم إصلاح هذه المشكلة. يحل التحديث إلى أحدث إصدار المشكلة على موقعك، لذا لا تحتاج إلى هذا الحل البديل المؤقت إلا إذا لم تتمكن من التحديث بعد.
يُرجى التأكد من أخذ نسخة احتياطية كاملة قبل المتابعة.
- افتح الملف …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php.
- ابحث عن السطر 185.
- استبدل:
if ( in_array( Obj::path( [ 'fields', $fieldId, 'type' ], $originalForm ), [ 'checkbox', 'radio', 'select' ], true ) ) {بـ:
if ( in_array( Obj::path( [ 'fields', $fieldId, 'type' ], $originalForm ), [ 'radio', 'select' ], true ) ) {