- Statut
- Résolu
- Signalé pour
- WPML Multilingual CMS 4.6.15
- Résolu dans
- WPML 4.7.5
- Extension/thème associé
- Elementor
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lors de l’utilisation du widget Image d’Elementor, la version traduite d’une page peut toujours faire référence à l’image de la langue d’origine, ce qui entraîne l’affichage d’un texte ALT incorrect dans la langue secondaire.
Solution de contournement
Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.
- Ouvrez le fichier functions.php de votre thème.
- Ajoutez l’extrait suivant :
// 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; }