rel=”alternate” hreflang=”x”
検索ユーザーに対して適した言語のページを検索結果に表示する
wordpressのmultisite機能を利用して国際化したブログサービスを開発している。
urlはサブドメイン構成で以下のようにしようとしている。
test.com → ルートドメイン
en-us.test.com → US用トップページ
es-es.test.com → スペイン用トップページ
ja.test.com → 日本向け
そして、各ブログのURLはすべての言語共通で、
***.test.com
という構成にしようとしている。
test.comで検索した場合には、ja.test.comが優先的に表示されるようにするためのHTML属性がhreflangで、
<link rel=”alternate” href=”http://ja.test.com/” hreflang=”ja” />
上のように設定する。
公式の情報は以下のURLを参照
- https://support.google.com/webmasters/answer/189077?hl=ja
- http://googlewebmastercentral-ja.blogspot.jp/2013/04/x-default-hreflang-for-international-pages.html
wordpressでHTMLのhead領域をカスタムするwp_headアクション
hreflang属性を追加するため以下のようにマルチサイト初期化プラグインにfunctionを追加した。
アクションフックの追加
add_action('wp_head', array($this, 'change_head'));
独自関数の定義
function change_head() { if( strpos($_SERVER['HTTP_HOST'], 'en-us.') !== false ) // US向け { echo "<link rel='alternate' href='http://en-us.".DOMAIN_CURRENT_SITE."/' hreflang='en-us' />"; } elseif( strpos($_SERVER['HTTP_HOST'], 'es-es.') !== false ) // ES向け { echo "<link rel='alternate' href='http://es-es.".DOMAIN_CURRENT_SITE."/' hreflang='es-es' />"; } elseif( $_SERVER['HTTP_HOST'] == DOMAIN_CURRENT_SITE ) // root domainの設定 { echo "<link rel='alternate' href='http://".DOMAIN_CURRENT_SITE."/' hreflang='x-default' />"; } else { // 一般のブログの場合はhreflangを設定しない } }
URLの部分で利用している、
DOMAIN_CURRENT_SITE
という定数は、マルチサイトを初期設定する際に、wordpressインストーラからwp-config.phpに追記するように案内される定数になり、ルートドメインが設定されるようになっている。
上の方法でhreflangを追記することができる。
リクエストURLのサブドメインに該当する言語が無く、ルートドメインにも該当しない場合は、何も出力しないようにしてある。具体的には、ブログを開設した個別のユーザーのブログがこの条件に該当する。
ユーザーのブログ自身が多言語化する場合には、サブドメインではなくサブディレクトリ形式の多言語化で対応する予定で個別記事の動的な翻訳については、別記事としてエントリーする予定。