- Stato
- Risolto
- Segnalato per
- WPML Multilingual CMS 3.3.6
- Risolto in
- 3.3.6
Panoramica del problema
I meta tag hreflang potrebbero mancare dall’header della pagina. Questo accade a partire da WPML 3.3.6, in combinazione con temi o plugin che caricano WPML troppo presto.
WPML dovrebbe includere i tag <link hreflang=”lang”> nella sezione header del tuo sito. Questo manca in alcuni siti che usano WPML 3.3.6 e in combinazione con alcuni plugin o temi. Il problema si verifica perché WPML tenta di generare questi tag all’inizio dell’header, ma altri plugin causano una race condition, attivando WPML troppo presto. Potresti ricevere un’e-mail da Google Webmaster tool che indica “Implementazione hreflang errata”.
La descrizione completa di questa funzionalità appare nelle linee guida di Google sui contenuti per gli URL per lingue e aree geografiche.
Soluzione alternativa
Per risolvere questo problema in WPML 3.3.6:
- Apri il file
sitepress-multilingual-cms/sitepress.class.php - Scorri fino in fondo a questo file, dove dovresti vedere questo:

- Sostituisci questa riga:
add_action( 'wp_head', array( $this, 'head_langs' ), 1 ); - Con:
add_action( 'wp_head', array( $this, 'head_langs' ) ); - La versione finale di questo codice deve avere questo aspetto:

- Salva il file
Nella prossima versione di WPML, verrà applicata la stessa correzione.
Il codice al passaggio 3 aveva lo scopo di stampare i meta tag hreflang il prima possibile, ma questo causa problemi con alcuni temi e plugin.
Se desideri comunque che i meta tag hreflang vengano stampati il prima possibile, puoi applicare una soluzione più complessa. Aggiungi questo codice al file functions.php del tuo tema:
function my_handle_head_hreflang() {
global $sitepress;
$settings = $sitepress->get_settings();
if ( $settings[ 'seo' ][ 'head_langs' ] ) {
remove_action( 'wp_head', array( $sitepress, 'head_langs' ) );
add_action( 'wp_head', array( $this, 'head_langs' ), 1 );
}
}
add_action('wpml_loaded', 'my_handle_head_hreflang');