WPML
Статус
Решено
Заявлено для
WPML Multilingual CMS 3.3.6
Решено в
3.3.6

Обзор проблемы

Метатеги hreflang могут отсутствовать в заголовке страницы. Это происходит начиная с версии WPML 3.3.6 в сочетании с темами оформления или плагинами, которые загружают WPML слишком рано.

WPML должен добавлять теги <link hreflang=”lang”> в раздел заголовка Вашего сайта. Они отсутствуют на некоторых сайтах, использующих WPML 3.3.6 в сочетании с определенными плагинами или темами оформления. Проблема возникает из-за того, что WPML пытается вывести эти теги на раннем этапе формирования заголовка, но другие плагины вызывают состояние гонки, запуская WPML слишком рано. Вы можете получить электронное письмо от сервиса Google Webmaster с сообщением «Incorrect hreflang implementation».

Полное описание этого функционала приведено в руководстве Google по контенту для многоязычных и региональных URL-адресов.

Обходное решение

Чтобы исправить это в WPML 3.3.6:


  1. Откройте файл sitepress-multilingual-cms/sitepress.class.php

  2. Прокрутите этот файл до конца, где Вы должны увидеть следующее: Снимок экрана 2016-02-24 в 10.47.11

  3. Замените эту строку: add_action( 'wp_head', array( $this, 'head_langs' ), 1 );

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

  5. Окончательная версия этого кода должна выглядеть так: Снимок экрана 2016-02-24 в 11.00.04

  6. Сохраните файл

В следующей версии WPML будет применено это же исправление.

Код на шаге 3 предназначался для того, чтобы метатеги hreflang выводились как можно раньше, но это вызывает проблемы с некоторыми темами оформления и плагинами.

Если Вы по-прежнему хотите, чтобы метатеги hreflang выводились как можно раньше, Вы можете применить более сложное решение. Добавьте этот код в файл functions.php Вашей темы оформления:

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

Все известные проблемы →