WPML
Statut
Résolu
Signalé pour
WPML Multilingual CMS 4.5.10
Résolu dans
WPML 4.6.4
Extension/thème associé
Elementor
Étiquettes de sujet
Bug, Compatibility

Aperçu de l’anomalie

Si vous importez du contenu de démonstration qui requiert Elementor (provenant des thèmes Astra ou Real Homes, par exemple), vous remarquerez qu’il ne sera pas possible de le traduire, et que l’erreur suivante apparaîtra sous 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

Cela se produit parce que le contenu de démonstration correspond à des données sérialisées, et que notre code d’intégration attend une chaîne de texte encodée en JSON.

Solution de contournement

Assurez-vous de faire une sauvegarde complète de votre site avant de continuer.


  1. Modifiez le fichier …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/DataConvert.php.

  2. Recherchez la ligne 21.

  3. Remplacez :
    public static function unserialize( $data ) {
        return json_decode( is_array( $data ) ? $data[0] : $data, true );
    }

    Par :

    public static function unserialize( $data ) {
            $data = is_array( $data ) ? $data[0] : $data;
            if (is_string($data)) {
                return json_decode( $data, true );
            }
            return $data;
    }

Toutes les anomalies connues →