WPML
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 );
    	}

Tất cả các lỗi đã ghi nhận →