- ステータス
- 解決済み
- 報告対象
- 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; }