- Status
- Resolvido
- Relatado para
- WPML Multilingual CMS 3.3.6
- Resolvido em
- 3.3.6
Visão geral do problema
As meta tags hreflang podem estar ausentes no cabeçalho da página. Isso está acontecendo desde o WPML 3.3.6, em combinação com temas ou plugins que estão carregando o WPML cedo demais.
O WPML deve incluir tags <link hreflang=”lang”> na seção de cabeçalho do seu site. Isso está ausente em alguns sites que usam o WPML 3.3.6 e em combinação com alguns plugins ou temas. O problema acontece porque o WPML está tentando exibir essas tags no início do cabeçalho, mas outros plugins estão causando uma condição de corrida, acionando o WPML cedo demais. Você pode receber um e-mail da ferramenta Google Webmaster dizendo “Implementação incorreta do hreflang”.
A descrição completa dessa funcionalidade aparece nas diretrizes de conteúdo do Google para URLs regionais e de idiomas.
Solução alternativa
Para corrigir isso no WPML 3.3.6:
- Abra o arquivo
sitepress-multilingual-cms/sitepress.class.php - Role até o final deste arquivo, onde você deve ver o seguinte:

- Substitua esta linha:
add_action( 'wp_head', array( $this, 'head_langs' ), 1 ); - Por:
add_action( 'wp_head', array( $this, 'head_langs' ) ); - A versão final deste código deve ficar assim:

- Salve o arquivo
Na próxima versão do WPML, a mesma correção será aplicada.
O código no passo 3 tinha a intenção de fazer com que as meta tags hreflang fossem impressas o mais cedo possível, mas isso causa problemas com alguns temas e plugins.
Se você ainda quiser que as meta tags hreflang sejam impressas o mais cedo possível, você pode aplicar uma solução mais complexa. Adicione este código ao arquivo functions.php do seu 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');