WPML
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:


  1. Abra o arquivo sitepress-multilingual-cms/sitepress.class.php

  2. Role até o final deste arquivo, onde você deve ver o seguinte: Captura de tela de 2016-02-24 às 10.47.11

  3. Substitua esta linha: add_action( 'wp_head', array( $this, 'head_langs' ), 1 );

  4. Por: add_action( 'wp_head', array( $this, 'head_langs' ) );

  5. A versão final deste código deve ficar assim: Captura de tela de 2016-02-24 às 11.00.04

  6. 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');

Todos os problemas conhecidos →