- الحالة
- محلولة
- تم حلها في
- WPML 4.7.6
- الإضافة/القالب ذو الصلة
- Elementor
- وسوم الموضوع
- Compatibility
نظرة عامة على المشكلة
باستخدام الإعدادات المتقدمة للودجت في Elementor Pro، يمكن إضافة شروط العرض، على سبيل المثال، لعرض الودجت فقط إذا كان المستخدم مسجل الدخول.
مؤخراً، تغير شيء ما في طريقة تخزين Elementor لهذه البيانات، وقد يتسبب ذلك في ظهور الخطأ التالي:
PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in .../wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/DisplayConditions.php:138
حل بديل مؤقت
سنحدّث الكود الخاص بنا للتعامل مع هذا التغيير في تخزين بيانات Elementor. في غضون ذلك، يمكنك تعديل ملف الإضافة هذا: wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/DisplayConditions.php
حدد موقع الدالة convertConditionIds (من السطر 134 في الإصدار الحالي)، واستبدلها بالكود أدناه:
private function convertConditionIds( array $conditionGroups ) {
// ensure $conditionGroups is an array of arrays and not just an associative array
$result = array_keys($conditionGroups)[0] !== 0 ? array($conditionGroups) : $conditionGroups;
foreach ( $result as $key => $conditionGroup ) {
$configForCondition = $this->getConfigForCondition( $conditionGroup['condition'] );
if ( $configForCondition && isset( $conditionGroup[ $configForCondition['field'] ] ) ) {
$result[ $key ] = $this->convertIdsForCondition( $conditionGroup, $configForCondition );
}
}
return $result;
}