[Résolu] Traduction des liens dans Attributs personnalisés dans Elementor
Ce sujet est résolu. Voici une description du problème et de la solution.
Problème : Vous souhaitez traduire des liens intégrés dans les Attributs personnalisés d'Elementor sur votre page d'accueil, mais vous ne parvenez pas à les traduire avec WPML. Solution : Nous avons identifié un code dans votre fichier
functions.php
qui gère les attributs
link|...
ajoutés aux colonnes Elementor. Pour résoudre ce problème, remplacez
home_url()
par le filtre WPML pour générer une URL adaptée à la langue :
Pour plus d'informations sur ce filtre, consultez https://wpml.org/wpml-hook/wpml_home_url/ Si vous avez besoin de compatibilité avec l'éditeur de traduction avancée de WPML, envisagez de déplacer les liens dans un champ texte ou widget standard d’Elementor et de les enregistrer via la configuration XML de WPML. Si ces solutions ne fonctionnent pas, vous pouvez envisager d'utiliser un plugin comme https://wordpress.org/plugins/make-column-clickable-elementor/ ou de contacter un prestataire WPML pour une aide personnalisée : https://wpml.org/contractors/
Si cette solution ne vous semble pas pertinente ou si elle est obsolète, nous vous recommandons de vérifier les problèmes connus sur https://wpml.org/known-issues/, de vérifier la version du correctif permanent et de confirmer que vous avez installé les dernières versions des thèmes et plugins. Si le problème persiste, n'hésitez pas à ouvrir un nouveau ticket de support sur notre forum de support.
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.
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 :