Passer la navigation

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.

Ce sujet contient 1 réponse, a 2 voix.

Dernière mise à jour par Nicolas V. Il y a 1 année et 8 mois.

Assisté par: Nicolas V..

Auteur Messages
octobre 17, 2023 à 1:46 pm #14595063

christelleC-3

Bonjour,

J'ai un site en FR dont la page d'accueil dans les versions traduites (ES et EN) a la même url canonique que la version française.

J'aimerais changer ces urls canoniques, de façon à ajouter /EN ou /ES à la fin.

J'utilise Yoast mais ma page d'accueil n'étant pas une page WP mais une page faisant directement appel au fichier index.php de WP, je ne peux pas me servir des réglages de Yoast pour paramétrer l'url canonique.

Seule la page d'accueil pose problème.

Avez-vous une idée de là où je peux intervenir pour rectifier ces urls canoniques ? Une ligne de code à ajouter à functions.php ?

Voici le lien vers mon site version EN lien caché

octobre 18, 2023 à 11:28 am #14603455

Nicolas V.
Supporter

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

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

Bonjour,

Bienvenue sur le support de WPML.

Je ne pense pas que vous pourrez changez l'URL si vous n'utilisez pas une page WP. Deux solutions qui me viennent à l'esprit:

1. Utiliser une page WP et lui attribuer la template PHP
Ref: https://developer.wordpress.org/themes/template-files-section/page-template-files/

Vous n'avez pas besoin d'avoir de contenu sur cette page, elle vous sert uniquement pour ajouter les champs Yoast et faire leur traduction. Si vous lisez la documentation donnée vous verrez que vous pouvez nommer la template page-{id}.php (ou id est l'ID de la page) pour appliquer cette template à cette page.

2. Hardcoder les balises Yoast. Plus compliqué mais vous pouvez sans doute hadcoder les balises sans utiliser Yoast.

<?php 
$my_current_lang = apply_filters( 'wpml_current_language', NULL );
if ( $my_current_lang == 'en' ) { 
	echo 'hello'; 
} else { 
	echo 'bonjour';
};
?>
octobre 19, 2023 à 1:16 pm #14615449

christelleC-3

Merci pour ces conseils.

En fait j'ai utilisé votre conseil pour hardcoder en visant la bonne langue + un filtre chez Yoast qui supprime l'url canonique.

/**
* Filter the canonical URL.
*
* @param string $canonical The current page's generated canonical URL.
*
* @return bool|string The filtered canonical URL or false when we want to remove it.
*/
function prefix_filter_canonical_example( $canonical ) {
if ( is_page( 12345 ) ) {
return false;
}

return $canonical;
}

add_filter( 'wpseo_canonical', 'prefix_filter_canonical_example' );