- Статус
- Решено
- Решено в
- 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;
}