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

כל התקלות הידועות →