WordPressで作ったサイトをSEO friendlyにするには、canonical urlの設定は必須です。今回、Twenty Twelveのheader.phpをゴリゴリカスタマイズして導入しましたのでメモ。
canonical urlとは
wordpressなどのCMS(Contents Management System)では、同じ内容のページを複数のURLで公開してしまうことがよくあります。
このような状態を放置しておくと、コピーコンテンツとみなされ、検索エンジンからペナルティーを受ける可能性が生じます。
canonical urlは、同じ内容のページを表示する複数のURLのうちどれが「正規のURL」であるかを検索エンジンに示すものです。
これによって、同じ内容のページを複数のURLで公開していても、コピーコンテンツとはみなされず、検索結果には「正規のURL」のみが表示されるようになります。
canonical urlをきちんと理解したい方には以下のページがオススメです。
[img-link url=”http://www.suzukikenichi.com/blog/rel-canonical-resolves-duplicate-content/” title=”rel="canonical"の正規化で、重複コンテンツを撃退 | 海外SEO情報ブログ”]
いつもわかりやすい解説をありがとうございます。
canonical urlの設定方法
具体的には以下のようなlinkタグでhead要素内に記述します。
<link rel="canonical" href="「正規のURL」" />
WordPressのcanonical url
バージョン 3.4.2現在、Wordpressではwp_headによって、個別記事ページのみcanonical urlが設定されています。
その他のページでもcanonical urlを設定するには、header.phpをカスタマイズしないといけません。(プラグインでもよさそうですが、ウェブシュフはなるべくプラグインの使用は控えめにしたいです。)
カスタマイズ
まず、wp_headにcanonical urlを設定させないようにします。
function.phpに以下の1行を記述します。
remove_action('wp_head', 'rel_canonical');
そして、header.phpのhead要素内には以下の記述を書き込みます。
<?php if ( is_home() ) {
$canonical_url=get_bloginfo('url')."/";
}
else if (is_category())
{
$canonical_url=get_category_link(get_query_var('cat'));
}
else if (is_page()||is_single())
{
$canonical_url=get_permalink();
}
if ( $paged>= 2 || $page>= 2)
{
$canonical_url=$canonical_url.'page/'.max( $paged, $page ).'/';
}
?>
<link rel="canonical" href="<?php echo $canonical_url; ?>" />
これで、適切にcanonical urlが吐き出されると思います。(カテゴリー以外のアーカイブページは、あまり重視していないので無視しています。)
ご参考になりましたら幸いです。