- Trạng thái
- Đã giải quyết
- Được báo cáo cho
- WPML Multilingual CMS 4.6.13
- Đã giải quyết trong
- WPML 4.7.2
- Plugin/giao diện liên quan
- Elementor
- Thẻ chủ đề
- ATE, Compatibility
Tổng quan về lỗi
Khi dịch các trang được tạo bằng Elementor sử dụng Trình biên tập dịch thuật nâng cao (ATE) của WPML, các ký tự như < (nhỏ hơn) hoặc > (lớn hơn) bị xóa bỏ hoặc diễn giải sai thành các thẻ HTML.
Giải pháp tạm thời
Đảm bảo bạn có bản sao lưu toàn bộ trang web của mình trước khi tiếp tục.
- Mở tệp …/wp-content/plugins/sitepress-multilingual-cms/classes/xliff/class-wpml-tm-xliff-writer.php.
- Tìm dòng 407.
- Thay thế:
private function remove_line_breaks_inside_tags( $string ) { return preg_replace_callback( '/(<[^>]*>)/m', array( $this, 'remove_line_breaks_inside_tag_callback' ), $string ); } /** * @param array $matches * * @return string */ private function remove_line_breaks_inside_tag_callback( array $matches ) { $tag_string = preg_replace( '/([\nr\t ]+)/', ' ', $matches[0] ); $tag_string = preg_replace( '/(<[\s]+)/', '<', $tag_string ); return preg_replace( '/([\s]+>)/', '>', $tag_string ); } - Bằng:
private function remove_line_breaks_inside_tags( $string ) { // Match only valid HTML tags (opening, closing, or self-closing) return preg_replace_callback( '/(<\/?[a-zA-Z][^<>]*>)/m', array( $this, 'remove_line_breaks_inside_tag_callback' ), $string ); } /** * @param array $matches * * @return string */ private function remove_line_breaks_inside_tag_callback( array $matches ) { // Remove unnecessary spaces and line breaks inside valid HTML tags $tag_string = preg_replace( '/([\nr\t ]+)/', ' ', $matches[0] ); $tag_string = preg_replace( '/(<[\s]+)/', '<', $tag_string ); return preg_replace( '/([\s]+>)/', '>', $tag_string ); }