WPML
Статус
Решено
Заявлено для
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.

Обходное решение

Пожалуйста, перед продолжением обязательно сделайте полную резервную копию Вашего сайта.


  1. Отредактируйте файл …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/DataConvert.php.

  2. Найдите строку 21.

  3. Измените:
    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;
    }

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