- Statut
- Résolu
- Résolu dans
- 1.2.0
- Extension/thème associé
- Yoast SEO
Aperçu de l’anomalie
Après de récents changements majeurs dans Yoast 14.x, certains utilisateurs de WPML constatent que le contenu de Yoast est toujours généré dans la langue par défaut.
Par exemple, sur une page dans une langue secondaire, il peut s’agir de balises « meta » comme « og:title » ou « og:description », ou des URL dans vos fils d’Ariane.
Nous avons une solution de contournement mais, en raison de la nature du problème, elle peut ne pas fonctionner pour tout le monde. Nous travaillons pour résoudre ce problème dès que possible.
Si vous rencontrez des difficultés pour traduire le contenu de Yoast, veuillez essayer la solution de contournement ci-dessous et attendre la prochaine version publiée de Yoast Multilingual avant de créer une demande d’assistance.
Solution de contournement
Ajoutez ce code au fichier functions.php de votre thème :
if ( ! is_admin() ) {
add_filter( 'wpseo_title', 'wpml_wpseo_title', 10, 2 );
add_filter( 'wpseo_opengraph_title', 'wpml_wpseo_title', 10, 2 );
}
function wpml_wpseo_title( $title, $presentation ) {
switch ( $presentation->model->object_type ) {
case 'post-type-archive':
$key = 'title-ptarchive-' . $presentation->model->object_sub_type;
break;
case 'system-page':
$key = 'title-' . $presentation->model->object_sub_type . '-wpseo';
break;
default:
$key = false;
}
if ( $key ) {
$option = get_option( 'wpseo_titles' );
if ( isset( $option[ $key ] ) ) {
$title = wpseo_replace_vars( $option[ $key ], $presentation );
}
}
return $title;
}
if ( ! is_admin() ) {
add_filter( 'wpseo_metadesc', 'wpml_wpseo_desc', 10, 2 );
add_filter( 'wpseo_opengraph_desc', 'wpml_wpseo_desc', 10, 2 );
}
function wpml_wpseo_desc( $title, $presentation ) {
switch ( $presentation->model->object_type ) {
case 'post-type-archive':
$key = 'metadesc-ptarchive-' . $presentation->model->object_sub_type;
break;
case 'system-page':
$key = 'metadesc-' . $presentation->model->object_sub_type . '-wpseo';
break;
default:
$key = false;
}
if ( $key ) {
$option = get_option( 'wpseo_titles' );
if ( isset( $option[ $key ] ) ) {
$title = wpseo_replace_vars( $option[ $key ], $presentation );
}
}
return $title;
}
add_filter( 'wpseo_save_indexable', function( $indexable ) {
$args = [
'element_id' => $indexable->object_id,
'element_type' => $indexable->object_type,
];
$language_code = apply_filters( 'wpml_element_language_code', false, $args );
$indexable->permalink = apply_filters( 'wpml_permalink', $indexable->permalink, $language_code, true );
return $indexable;
} );
Après avoir ajouté le code, installez l’extension Yoast Test Helper.
Allez dans Outils > Yoast Test et cliquez sur « Reset Indexables tables & migrations ».
Enfin, allez dans votre Tableau de bord et cliquez sur la notification d’administration qui vous invite à indexer le site.
Si vous avez des questions ou si vous souhaitez signaler un problème lié, veuillez mentionner cette anomalie connue afin que notre équipe puisse vous fournir une assistance efficace.