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