- 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.
- Modifiez le fichier …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/DataConvert.php.
- Recherchez la ligne 21.
- 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; }