[Attente de la confirmation de l'utilisateur] Traduction des liens dans Attributs personnalisés dans Elementor
Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.
Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.
Bonjour & bienvenue sur le forum de soutien WPML.
En raison des vacances, le forum français est fermé du 28 juillet à 04 août 2025.
D'ici là, veuillez vous adresser à notre support en anglais. Nous vous remercions pour votre compréhension et de votre patience.
Équipe de soutien WPML,
Sun
Mon
Tue
Wed
Thu
Fri
Sat
-
8:00 – 13:00
9:00 – 13:00
9:00 – 13:00
8:00 – 12:00
8:00 – 12:00
-
-
14:00 – 17:00
14:00 – 18:00
14:00 – 18:00
13:00 – 17:00
13:00 – 17:00
-
Fuseau horaire du support : Europe/Zagreb (GMT+02:00)
Contexte de la question:
Je souhaite traduire les liens sur la page d'accueil de mon site lien caché. Ces liens sont intégrés dans la colonne via le champ Attributs personnalisés d'Elementor sous cette forme : link|/achat-villa-de-luxe-cannes.
Symptômes:
Je ne parviens pas à traduire les liens dans les Attributs personnalisés d'Elementor.
Questions:
Comment puis-je traduire les liens dans les Attributs personnalisés d'Elementor avec WPML ?
Les langues: Anglais (English )Allemand (Deutsch )Français (Français )
Fuseau horaire: Europe/Zagreb (GMT+02:00)
Nous avons identifié le code suivant dans votre fichier `functions.php` qui gère les attributs `link|...` ajoutés aux colonnes Elementor :
<?php
add_action('elementor/frontend/column/before_render', function($column) {
$attributes = $column->get_settings('attributes');
if (!empty($attributes) && is_array($attributes)) {
foreach ($attributes as $key => $value) {
// Vérifier si l'attribut contient "link|"
if (strpos($value, 'link|') === 0) {
// Extraire l'URL après "link|"
$url = str_replace('link|', '', $value);
// Supprimer le préfixe /fr ou /en si présent
$url = preg_replace('#^/(fr|en)#', '', $url);
// Ajouter le home_url en fonction de la langue active
$translated_url = home_url($url);
// Remplacer l'attribut par la version traduite
$attributes[$key] = 'link|' . $translated_url;
}
}
$column->set_settings('attributes', $attributes);
}
});
Pouvez-vous essayer de remplacer `home_url()` par le filtre WPML pour générer une URL adaptée à la langue:
Cela devrait générer des liens dans la bonne langue.
Alternative (si la compatibilité avec l'éditeur de traduction avancée de WPML est indispensable), déplacer les liens dans un champ texte ou widget standard d’Elementor et les enregistrer via la configuration XML de WPML.
Bonjour Bruno,
alors j'ai modifié le code que j'avais mis en place pour tenter de traduire les liens comme suit :
add_action('elementor/frontend/column/before_render', function($column) {
$attributes = $column->get_settings('attributes');
if (!empty($attributes) && is_array($attributes)) {
foreach ($attributes as $key => $value) {
// Vérifier si l'attribut contient "link|"
if (strpos($value, 'link|') === 0) {
// Extraire l'URL après "link|"
$url = str_replace('link|', '', $value);
// Supprimer le préfixe /fr ou /en si présent
$url = preg_replace('#^/(fr|en)#', '', $url);
// Ajouter le home_url en fonction de la langue active
$translated_url = apply_filters('wpml_home_url', home_url()) . $url;
// Remplacer l'attribut par la version traduite
$attributes[$key] = 'link|' . $translated_url;
}
}
$column->set_settings('attributes', $attributes);
}
});
J'ai vidé les caches, rescanné le thème, je ne vois nul part la possibilité de traduire les URLs.
Ce code dans Fonction.php j'essayé de traduire ce champs, mais peut-être perturbe t-il plus les choses, dois-je le supprimer ?
Les langues: Anglais (English )Allemand (Deutsch )Français (Français )
Fuseau horaire: Europe/Zagreb (GMT+02:00)
Pouvez-vous également nous fournir un accès FTP afin que nous puissions vérifier le code et voir si nous pouvons trouver une solution de contournement ?
Faites-moi savoir si nous pouvons essayer d'apporter des modifications au code qui gère cela et observer le résultat.
Les langues: Anglais (English )Allemand (Deutsch )Français (Français )
Fuseau horaire: Europe/Zagreb (GMT+02:00)
J'ai fait un suivi avec le support de second niveau concernant le problème — ils ont tenté quelques solutions, mais aucune n’a fonctionné.
Comme indiqué dans la https://wpml.org/fr/purchase/politique-dassistance/, le code personnalisé ne fait pas partie du support standard. Sur la base de leur recommandation, voici deux options que vous pouvez envisager :