- 状态
- 已解决
- 报告针对
- 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; }