Sauter la navigation

Ce sujet est résolu. Voici une description du problème et de la solution.

Problème : Le client utilise WPML sur un site WordPress pour ajouter des traductions en français. Un problème de SEO est survenu avec des URL dupliquées.
Solution : Nous recommandons de suivre ces étapes pour résoudre le problème temporairement en attendant une mise à jour du plugin SEOPress :
1. Faites une sauvegarde complète de votre site et de votre base de données, en particulier du fichier

.../wp-content/plugins/wp-seopress/inc/functions/options-titles-metas.php

.
2. Ouvrez le fichier et localisez la ligne 1022.
3. Remplacez le code existant par le nouveau code présenté dans cet erratum: https://wpml.org/errata/seopress-canonical-urls-not-pointing-to-default-language-for-untranslated-content/.
Ce correctif vérifie si le post est traduit et, si ce n'est pas le cas, bascule vers la langue par défaut avant de générer l'URL canonique, puis revient à la langue actuelle.

Si cette solution ne résout pas votre problème ou semble obsolète, nous vous recommandons de vérifier les problèmes connus, 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.

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.

Marqué : 

Ce sujet contient 11 réponses, a 2 voix.

Dernière mise à jour par Nicolas V. Il y a 2 mois et 2 semaines.

Assisté par: Nicolas V..

Auteur Articles
Novembre 19, 2024 à 4:06 pm #16420674

olivierd-46

Contexte de la question:
WPML est installé sur le site de mon client, lien caché. C'est un site sous WordPress en anglais et ils veulent mettre en place la traduction française. Tout a été paramétré.

Symptômes:
Un souci est apparu au niveau de leur SEO. Toutes les URL ont été dupliquées en "/fr" et donc tous les méta-titre et méta-description, ce qui pose un gros souci au niveau du référencement.

Questions:
Savez-vous si cette duplication d'URL est due à un mauvais paramétrage de WPML ?

Novembre 19, 2024 à 5:21 pm #16420939

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci d'avoir contacté le support de WPML.

Je pense que cela vient du fait que vous avez choisi la préférence de traduction "Translatable - use translation if available or fallback to default language" pour vos articles, pages et catégories.

Avec cette préférence, si la page n'existe pas encore en Français (pas encore traduite), WPML montrera la version d'origine (Anglais) à la place.

C'est pour cela que dans votre sitemap (lien caché)
seulement lien caché apparait. Mais sur le frontend on peut aussi accéder à lien caché qui affiche le contenu de la version Anglaise.

Veuillez vous rendre dans "WPML > Settings > Post Types Translation" pour changer cela à "Translatable - only show translated items". Faites de même pour les catégories dans "WPML > Settings > Taxonomies Translation".

Novembre 20, 2024 à 8:41 am #16422996

olivierd-46

Bonjour,

Merci pour votre réponse si rapide.

J'ai utilisé "Translatable - use translation if available or fallback to default language" parce que mon client n'a pas l'objectif de traduire l'entièreté de son site en français. De ce fait, il aimerait que les contenus anglais continus d'apparaître malgré que le visiteur switch en français.

C'est pour cela que j'avais utilisé cette option ...

Y a t-il une alternative afin de ne pas engendrer de problème SEO ?

Merci d'avance,
Passez une bonne journée

Novembre 21, 2024 à 12:44 pm #16428994

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Nous avons une documentation expliquant les 3 méthodes pour montrer un contenu non traduit. La seule qui devrait créer du contenu dupliqué est la copie du contenu.

Je vais faire quelques tests avec SEOPress et Yoast SEO car je pense que les URLs canonical de dans les deux premières solutions ("Fallback" et "Duplication") devraient renvoyer vers la langue d'origine pour indiquer à Google de ne pas indexer la langue secondaire.

Je reviens vers vous après mes tests et que mes collègues de deuxième niveau me confirme si c'est le comportement attendu ou si c'est un bug ou autre problème de compatibilité.

Merci de patienter,
Nico

Novembre 21, 2024 à 1:55 pm #16429406

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

D'après mes tests il semble que ce soit un problème de compatibilité avec SEOPress car en utilisant Yoast SEO+ WPML SEO le problème est résolu.

Je viens de faire remonter votre ticket avec le site test que j'ai créé.

Je reviens vers vous dès que j'ai un feedback de l'équipe de compatibilité mais comme notre documentation n'indique pas que WPML SEO soit nécessaire avec SEOPress, il se peut que le problème soit du côté de SEOPress.

Je vous tiens informé dès que possible.

Merci d'avoir reporté ce problème!

Novembre 22, 2024 à 12:05 pm #16433694

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Voici une solution d'appoint en attendant que l'auteur du plugin modifie son code:
- Faites un backup complet de votre site et base de données mais surtout du fichier ci-dessous que nous allons modifier.
- Ouvrez .../wp-content/plugins/wp-seopress/inc/functions/options-titles-metas.php
- Cherchez la ligne 1022
- Remplacez:

        function seopress_titles_canonical_hook() {
            global $wp;

            $current_url = user_trailingslashit(home_url(add_query_arg([], $wp->request)));

            if (is_search()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_home_url() . '/search/' . get_search_query())) . '">';
            } elseif (is_paged() && is_singular()) {//Paginated pages
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_permalink())) . '">';
            } elseif (is_paged()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode($current_url)) . '">';
            } elseif (is_singular()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_permalink())) . '">';
            } else {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode($current_url)) . '">';
            }
            //Hook on post canonical URL - 'seopress_titles_canonical'
            if (has_filter('seopress_titles_canonical')) {
                $seopress_titles_canonical = apply_filters('seopress_titles_canonical', $seopress_titles_canonical);
            }
            echo $seopress_titles_canonical . "\n";
        }

- Par:

        function seopress_titles_canonical_hook() {
            global $wp;

            $current_url = user_trailingslashit(home_url(add_query_arg([], $wp->request)));
            // WPML Workaround for compsupp-7703
            if (class_exists('SitePress')) {
              $post_ID = get_the_ID();
              $post_type = get_post_type( $post_ID );
              $transl_status = apply_filters( 'wpml_element_translation_type', NULL, $post_ID, $post_type );
              // If the post is not translated, switch to the default language
              if ($transl_status != 1) { 
                  $my_default_lang = apply_filters('wpml_default_language', NULL );
                  $my_current_lang = apply_filters( 'wpml_current_language', NULL );
                  do_action( 'wpml_switch_language', $my_default_lang );
              } 
            }
            if (is_search()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_home_url() . '/search/' . get_search_query())) . '">';
            } elseif (is_paged() && is_singular()) {//Paginated pages
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_permalink())) . '">';
            } elseif (is_paged()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode($current_url)) . '">';
            } elseif (is_singular()) {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode(get_permalink())) . '">';
            } else {
                $seopress_titles_canonical = '<link rel="canonical" href="' . htmlspecialchars(urldecode($current_url)) . '">';
            }
            // Then switch back to the current language
            if (class_exists('SitePress')) {
              do_action( 'wpml_switch_language', $my_current_lang );
            }
            //Hook on post canonical URL - 'seopress_titles_canonical'
            if (has_filter('seopress_titles_canonical')) {
                $seopress_titles_canonical = apply_filters('seopress_titles_canonical', $seopress_titles_canonical);
            }
            echo $seopress_titles_canonical . "\n";
        }

Merci de me confirmer si cette solution fonctionne correctement pour vous.

PS: Après votre confirmation, nous contacterons l'auteur pour reporter le problème. Je vous recommande de faire de même de votre coté en tant qu'utilisateur.

Novembre 25, 2024 à 9:19 am #16438503

olivierd-46

Bonjour,

Merci pour ces informations.

Nous allons essayer de mettre ce code en place.

Petite question, avec ce code je peux à nouveau passer ma traduction en "Translatable - use translation if available or fallback to default language" ?

Je reviens vers vous pour vous dire si ça fonctionne et que les soucis de duplication ont disparus !

Merci encore,
Belle journée

Novembre 25, 2024 à 4:56 pm #16441378

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Oui avec ce code vous pouvez réactiver le "fallback".

Avec cette condition:

if ($transl_status != 1) {

si le status de traduction est différent de "traduit", nous basculons à nouveau dans la langue par défaut pour que l'URL canonique soit celle de la langue par défaut. Cela évitera donc les "duplicate content".

Deux choses:
- Si vous pouviez contacter l'auteur de ce plugin pour reporter le problème (nous le ferons aussi de notre côté une fois que vous confirmer que tout fonctionne).
- Ce problème ne se produit pas avec Yoast SEO ou Rank Math qui fonctionnent tous les deux avec WPML SEO.

Novembre 28, 2024 à 1:54 pm #16455567

olivierd-46

Bonjour,

Merci beaucoup pour votre aide.

Le client a toujours le problème qui remonte dans ubersuggest ...

Je ne sais pas si ubersuggest remonte des URLs dupliquées mais qui ne sont pas indexées ou si elles le sont par Google. Si elles le sont c'est là que le souci se pose ...

J'ai reporter via message à SEOPress le problème auquel je fais face.

Bonne journée

Novembre 28, 2024 à 7:30 pm #16456809

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Le fait que les pages soient dupliquées est normal, car vous montrer dans les langues secondaires exactement le même contenu que la la langue primaire.

Le point important est que l'URL canonique pointe correctement vers la langue primaire pour indiquer à Google que c'est la page dans la langue primaire qui devrait être indexée et éviter le "duplicate content".

Pourriez-vous confirmer cela? Notez qui faudra peut être purger vos caches afin que le code source HTML reflète ces changements.

Novembre 29, 2024 à 9:27 am #16458339

olivierd-46

Bonjour Nicolas,

Super je vous confirme que c'est ok de notre côté, la search console renvoie bien que l'info comme quoi c'est l'url canonique de la langue primaire qui est prise en compte. Vous pouvez donc contacter Seopress (ils ne nous ont pas répondu à ce stade).
Merci !

Capture d’écran 2024-11-29 à 10.19.19.png
Novembre 29, 2024 à 11:46 am #16459204

Nicolas V.
Supporter

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

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci pour votre feedback. Je ferme donc ici et j'informe notre équipe de compatibilité.