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ウェブマスターツールから「Incorrect hreflang implementation(hreflangの実装に誤りがあります)」というメールを受信する場合があります。

この機能の完全な説明は、言語や地域のURLに関するGoogleのコンテンツガイドラインに記載されています。

回避策

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

すべての既知の問題 →