WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Multilingual CMS 4.6.15
تم حلها في
WPML 4.7.5
الإضافة/القالب ذو الصلة
Elementor
وسوم الموضوع
Compatibility

نظرة عامة على المشكلة

عند استخدام ودجت الصورة لـ Elementor، قد تظل النسخة المترجمة من الصفحة تشير إلى الصورة الخاصة باللغة الأصلية، مما يؤدي إلى عرض نص ALT غير صحيح في اللغة الثانوية.

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • افتح ملف functions.php في قالبك.

  • أضف المقتطف التالي:
    // 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;
    }

جميع المشاكل المعروفة →