- ステータス
- 解決済み
- 報告対象
- 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でこの問題を修正するには:
- ファイル
sitepress-multilingual-cms/sitepress.class.phpを開きます。 - このファイルの一番下までスクロールすると、次のように表示されます。

- 次の行を:
add_action( 'wp_head', array( $this, 'head_langs' ), 1 ); - 次のように置き換えます。
add_action( 'wp_head', array( $this, 'head_langs' ) ); - 最終的なコードは次のようになります。

- ファイルを保存します。
次のバージョンの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');