- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- 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
ปัญหานี้เกิดขึ้นเนื่องจากเนื้อหาตัวอย่างเป็นข้อมูลแบบ serialized และโค้ดการทำงานร่วมกันของเราต้องการสตริงข้อความที่เข้ารหัสแบบ 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; }