WPML
Trạng thái
Đã giải quyết
Được báo cáo cho
WPML Multilingual CMS 4.6.15
Đã giải quyết trong
WPML 4.7.5
Plugin/giao diện liên quan
Elementor
Thẻ chủ đề
Compatibility

Tổng quan về lỗi

Khi sử dụng widget Hình ảnh của Elementor, phiên bản dịch của một trang vẫn có thể tham chiếu đến hình ảnh của ngôn ngữ gốc, dẫn đến việc văn bản ALT không chính xác được hiển thị bằng ngôn ngữ phụ.

Giải pháp tạm thời

Vui lòng đảm bảo có bản sao lưu toàn bộ trang web trước khi tiếp tục.


  • Mở tệp functions.php trong giao diện của bạn.

  • Thêm đoạn mã sau:
    // WPML: Find translatable IDs in Elementor Widgets
    add_filter( 'elementor/frontend/before_render', 'wpml_compsupp_find_translatable_post_ids_in_settings' );
    
    function wpml_compsupp_find_translatable_post_ids_in_settings( $element ) {
    
        $widget_name = $element->get_name();
        $settings    = $element->get_settings();
    
        // Recursively translate post IDs in settings array
        $translated_settings = wpml_compsupp_find_translatable_post_ids_in_array( $settings, $widget_name );
    
        $element->set_settings( $translated_settings );
    }
    
    function wpml_compsupp_find_translatable_post_ids_in_array( $settings, $widget_name, $path = [] ) {
    
        $apply_translations = true; // if set to false, translated IDs are not applied to the content
    
        foreach ( $settings as $key => &$value ) {
            // Translate IDs and handle nested settings
            $currentPath = array_merge($path, [$key]);
    
            if ( is_array( $value ) || is_object( $value ) ) {
                // If the value is an array or object, run the function recursively
                $value = wpml_compsupp_find_translatable_post_ids_in_array((array)$value, $widget_name, $currentPath);
            } elseif ( is_numeric( $value ) && $value != 0 ) {
                // Translate post ID if it is numeric and a valid post type exists
                $post_type   = get_post_type( $value );
                $post_status = get_post_status( $value );
    
                if ( $post_type && $post_status == 'publish' ) {
                    $translated_value = apply_filters( 'wpml_object_id', $value, $post_type, true );
    
                    if ($apply_translations === true ) {
                        $value = $translated_value;
                    }
                }
            }
        }
    
        return $settings;
    }

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