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

Все известные проблемы →