みんなcanonicalの設定どうしてる?

今日は私が今まで勘違いしていたcanonical設定のお話。

これまで私のcanonicalの認識は同じ内容のページを表示する複数のURLのうち、どれが「正規のURL」であるかを検索エンジンに示すもの
というものだった。

そのためWordpress上では下記の内容をいれておけばいいという認識だったのだ…。

<link rel="canonical" href="<?php echo home_url(); ?>" />

が、認識は間違っていなかったものの単純なページ構成のサイトでは、「正規のURL」をわざわざ指定する
必要などないのでは?と個人的にはこのcanocicalを軽視していました。

しかしながらWordPressサイトを構築した場合、同じ内容のページを複数のURLで公開
する場合が多いことに気づいたのです。

このままにしてしまうと、検索エンジンからペナルティーを受ける可能性があるため
下記のように記述を変更することにしました。

<?php
	global $page, $paged, $wp_query;
	//トップ
	if(is_home()||is_front_page()){
	$canonical_url = home_url();
	//カテゴリーページ
	}else if (is_category()){
	$canonical_url = get_category_link(get_query_var('cat'));
	//固定&投稿
	} else if (is_page()||is_single()) {
	$canonical_url = get_permalink();
	//その他のページ
	} else {
	$canonical_url = null;
	}
	if ($canonical_url == !null) { ?><link rel="canonical" href="<?php echo $canonical_url; ?>" />
	<?php }
	//前後のページへのリンク
	if (!$max_page)
	$max_page = $wp_query->max_num_pages;
	if (!$paged)
	$paged = 1;
	$nextpage = intval($paged) + 1;
	if (!is_singular() && ($nextpage <= $max_page)) { ?>
	<link rel="next" href="<?php echo next_posts( $max_page, false ); ?>" />
	<?php }
	if(!is_singular() && $paged > 1){ ?>
	<link rel="prev" href="<?php echo previous_posts( false ); ?>" />
	<?php } ?>

とまあこんな感じ。
これを張り付けておけば問題ありません。

みなさんもWordpressでサイトを構築した際にはcanonicalに気を付けてくださいね★