WPML
Stato
Risolto
Risolto in
1.2.0
Plugin/tema correlato
Yoast SEO

Panoramica del problema

Dopo le recenti importanti modifiche in Yoast 14.x, alcuni utenti di WPML riscontrano che i contenuti di Yoast vengono sempre generati nella lingua predefinita.

Ad esempio, in una pagina in una lingua secondaria, potrebbe trattarsi di tag “meta” come “og:title” o “og:description”, oppure degli URL nei breadcrumb.

Abbiamo una soluzione alternativa ma, a causa della natura del problema, potrebbe non funzionare per tutti. Stiamo lavorando per risolvere questo problema il prima possibile.

Se riscontri problemi nella traduzione dei contenuti di Yoast, prova la soluzione alternativa di seguito e attendi la prossima versione di Yoast Multilingual prima di creare un ticket di supporto.

Soluzione alternativa

Aggiungi questo codice al file functions.php del tuo tema:

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;
} );

Dopo aver aggiunto il codice, installa il plugin Yoast Test Helper.
Vai su Strumenti > Yoast Test e fai clic su “Reset Indexables tables & migrations”.
Infine, vai alla tua Bacheca e fai clic sull’avviso dell’area di amministrazione che ti chiede di indicizzare il sito.

Se hai domande o desideri segnalare un problema correlato, menziona questo problema noto in modo che il nostro team possa fornirti un supporto efficiente.

Tutti i problemi noti →