- Статус
- Решено
- Заявлено для
- WPML Multilingual CMS 4.5.10
- Решено в
- WPML 4.6.4
- Связанный плагин/тема
- Elementor
- Теги темы
- Bug, Compatibility
Обзор проблемы
Если Вы импортируете демо-контент, для которого требуется Elementor (например, из тем оформления Astra или Real Homes), Вы заметите, что перевести его невозможно, а в PHP 8 появится следующая ошибка:
Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, array given in …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/DataConvert.php:22
Это происходит потому, что демо-контент представляет собой сериализованные данные, а наш код интеграции ожидает строку в формате JSON.
Обходное решение
Пожалуйста, перед продолжением обязательно сделайте полную резервную копию Вашего сайта.
- Отредактируйте файл …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/DataConvert.php.
- Найдите строку 21.
- Измените:
public static function unserialize( $data ) { return json_decode( is_array( $data ) ? $data[0] : $data, true ); }на:
public static function unserialize( $data ) { $data = is_array( $data ) ? $data[0] : $data; if (is_string($data)) { return json_decode( $data, true ); } return $data; }