Passer au contenu Passer à la barre latérale

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.

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+01:00)

Marqué : 

Ce sujet contient 6 réponses, a 0 voix.

Dernière mise à jour par ericD-36 Il y a 1 semaine et 4 jours.

Assisté par: Bruno Kos.

Auteur Messages
février 4, 2026 à 8:02 am #17790095

ericD-36

Bonjour,
Notre client veut modifier la langue native. Actuellement, on a ça :
zzz.com : français
zzz.com/en/ : anglais
zzz.com/pt-br/ : portugais
zzz.com/zh-hans/ : chinois

Il veut que la version anglaise soit la .com et que la version française devienne /fr/ :
zzz.com : anglais
zzz.com/fr/ : français
zzz.com/pt-br/ : portugais
zzz.com/zh-hans/ : chinois

J'ai testé sur le serveur de développement et j'ai réenregistré les permaliens : toutes les urls sont bien modifiées.
Mais les champs ACF de liens n'ont pas été modifiés. Le préfixe de langue /fr/ ne se rajoute pas aux liens fr et le préfixe de langue /en/ ne se retire pas des liens. Et les champs relationnels ACF non plus. Par exemple, sur la version anglaise, le texte reste en français au lieu de prendre les textes anglais (photo en pièce jointe).
On a quand même des centaines de pages avec potentiellement plusieurs liens par page et il y a de nombreuses sections FAQ (CPT : FAQ, chaque post est une question/réponse qui peut être inséré dans le builder). Est-ce qu'il y aurait un ou des paramètres supplémentaires à modifier pour que ces champs soient correctement synchronisés ?
(La version dèv ne dispose plus de la clé de licence qui est partie sur la prod, est-ce que ça pourrait jouer ?).
Merci de l'aide que vous pourrez m'apporter.
Florent

février 4, 2026 à 2:12 pm #17792159

Bruno Kos
Partisan de WPML depuis 12/2018

Les langues: Anglais (English ) Allemand (Deutsch ) Français (Français )

Fuseau horaire: Europe/Zagreb (GMT+01:00)

Bonjour Florent,

Merci pour les détails. Afin de pouvoir analyser le problème plus précisément, pourriez-vous nous communiquer 2 à 3 URLs d’exemple (en anglais et en français si possible) où le comportement se produit?

Cela nous permettra de vérifier le contexte de langue et la configuration des champs ACF concernés.

À noter également que l’absence de clé de licence sur l’environnement de développement ne peut pas être à l’origine de ce problème.

février 4, 2026 à 3:09 pm #17792713

ericD-36

Bonjour Kos,

lien caché
C'est donc la version anglaise. Les boutons "Find out more" sur la bannière d'Accueil ou " Configure your project" sur une bannière plus bas ont /en/ dans leur urls.
Tout en bas de la page, la FAQ est en français.

Sur l'Accueil en version française, le bouton "En savoir plus" n'a pas le préfixe /fr/ tout comme celui de la bannière "Configurez votre projet".

février 5, 2026 à 7:16 am #17794448

Bruno Kos
Partisan de WPML depuis 12/2018

Les langues: Anglais (English ) Allemand (Deutsch ) Français (Français )

Fuseau horaire: Europe/Zagreb (GMT+01:00)

Pouvez-vous accéder à wp-admin/plugin-install.php, mettre à jour WPML et ses modules complémentaires? Nous venons de publier la version 4.9.0 qui apporte de nombreuses corrections et améliorations.

Ensuite, pouvez-vous aller dans WPML -> Réglages -> Update internal links -> Scan now and adjust links?

Les liens sont-ils corrigés après cela?

Si cela ne fonctionne toujours pas, pouvez-vous essayer ce qui suit:

WPML -> Support-> Troubleshooting :
– Synchroniser les taxonomies des publications (pour chaque type de publication concerné)
– Vider le cache dans WPML
– Définir les informations de langue
– Corriger le nombre de termes
– Corriger l’affectation des types de publication pour les traductions

Tenez-moi au courant!

scan now.jpg
update.jpg
février 5, 2026 à 7:16 am #17794449

Bruno Kos
Partisan de WPML depuis 12/2018

Les langues: Anglais (English ) Allemand (Deutsch ) Français (Français )

Fuseau horaire: Europe/Zagreb (GMT+01:00)

Pouvez-vous accéder à wp-admin/plugin-install.php, mettre à jour WPML et ses modules complémentaires? Nous venons de publier la version 4.9.0 qui apporte de nombreuses corrections et améliorations.

Ensuite, pouvez-vous aller dans WPML -> Réglages -> Update internal links -> Scan now and adjust links?

Les liens sont-ils corrigés après cela?

Si cela ne fonctionne toujours pas, pouvez-vous essayer ce qui suit:

WPML -> Support-> Troubleshooting :
– Synchroniser les taxonomies des publications (pour chaque type de publication concerné)
– Vider le cache dans WPML
– Définir les informations de langue
– Corriger le nombre de termes
– Corriger l’affectation des types de publication pour les traductions

Tenez-moi au courant!

scan now.jpg
update.jpg
février 5, 2026 à 9:12 am #17794985

ericD-36

J'ai mis à jour WPML et ses add-ons puis j'ai "Update internal links". Rien a changé.
J'ai ensuite fait toute la liste et rien a changé.
On a toujours les liens anglais avec le /en/ et les liens français sans le /fr/. Et on a les FAQ en français dans la version anglaise, partout sur la site.

J'ai ajouté une fonction pour les urls :
/**
* Corrige une URL ACF pour la langue courante
* Config : Anglais = langue par défaut (pas de préfixe), Français = /fr/
*
* @param string $url L'URL à corriger
* @return string L'URL corrigée
*/
function fix_wpml_url($url) {
if (empty($url) || !function_exists('icl_object_id')) {
return $url;
}

$current_lang = apply_filters('wpml_current_language', 'en');

// Étape 1: Supprimer /en/ de l'URL (l'anglais est maintenant sans préfixe)
$url = str_replace('/en/', '/', $url);

// Étape 2: Nettoyer les doubles slashes (sauf après http:)
$url = preg_replace('#(?<!:)//+#', '/', $url);

// Étape 3: Si français et pas de /fr/ dans l'URL, l'ajouter
if ($current_lang === 'fr' && strpos($url, '/fr/') === false) {
// Obtenir l'URL de base du site sans préfixe de langue
$home = home_url();
$home = preg_replace('#/fr/?$#', '', $home);
$home = rtrim($home, '/');

// Insérer /fr/ après le home
if (strpos($url, $home . '/') === 0) {
$rest = substr($url, strlen($home));
$url = $home . '/fr' . $rest;
} elseif ($url === $home) {
$url = $home . '/fr/';
}
}

return $url;
}

/**
* Corrige un tableau de lien ACF (avec url, title, target)
*
* @param array|null $link Le tableau de lien ACF
* @return array|null Le tableau avec l'URL corrigée
*/
function fix_wpml_acf_link($link) {
if (!is_array($link) || empty($link['url'])) {
return $link;
}

$link['url'] = fix_wpml_url($link['url']);
return $link;
}
Je l'applique aux liens de l'intro et de la bannière. Ca marche. J'ai également modifié la section FAQ en ajoutant ceci :
// Traduire les FAQ dans la langue courante (WPML)
if ($faq_select && function_exists('icl_object_id')) {
$translated_faqs = [];
foreach ($faq_select as $faq_post) {
$translated_id = apply_filters('wpml_object_id', $faq_post->ID, 'faq', true);
if ($translated_id) {
$translated_post = get_post($translated_id);
if ($translated_post && $translated_post->post_status === 'publish') {
$translated_faqs[] = $translated_post;
} else {
$translated_faqs[] = $faq_post;
}
} else {
$translated_faqs[] = $faq_post;
}
}
$faq_select = $translated_faqs;
}
Et tout semble fonctionner. Est-ce la bonne façon de faire ? Car il ne semble y avoir aucun autre moyen.

février 5, 2026 à 10:32 am #17795385

Bruno Kos
Partisan de WPML depuis 12/2018

Les langues: Anglais (English ) Allemand (Deutsch ) Français (Français )

Fuseau horaire: Europe/Zagreb (GMT+01:00)

Pouvez-vous me fournir les identifiants d'accès à WordPress?

Je souhaite vérifier cela directement et consulter nos développeurs concernant le cas.

Il est bon d’apprendre que le code fonctionne; cependant, cette fonctionnalité devrait fonctionner par défaut, sans que les clients aient à écrire du code supplémentaire pour résoudre ces problèmes.

J'ai marqué votre prochaine réponse comme privée afin que vous puissiez ajouter les informations de connexion en toute sécurité.