「Canonical URL」とは、同じ内容のページを表示する複数のURLのうち、どれが「正規のURL」であるかを検索エンジンに示すものです。

「Canonical URL」を指定することにより、同じ内容のページを複数のURLで公開していても、コピーコンテンツとはみなされず、検索結果には「正規のURL」のみが表示されるようになります。

実を言うと個人的には、つい最近まで[meta=”canonical”]属性の存在を軽視していました。
単純なページ構成のサイトでは、「正規のURL」をわざわざ指定するまでもないと考えていたからです。

しかし、WordPress などのCMS(Contents Management System)で構築されたサイトでは、同じ内容のページを複数のURLで公開してしまうケースがよくあります。

この状態を放置しておくと、検索エンジンからペナルティーを受ける可能性が生じます。
さすがにそれはマズいので、ごくシンプルな方法での解決策を模索しました。

詳細は以下。

WordPress で[Canonical URL]を設定する手順

まず、WordPress のテンプレートタグ <php wp_head(); >で「canonical url」を吐き出させないように、テーマファイル内の functions.php に以下の1行を記述します。

remove_action('wp_head', 'rel_canonical');

続いて、同じくテーマファイル内の header.php の任意の場所に、以下のコードを書き加えます。

<?php
if (is_home()) {
	$canonical_url  = get_bloginfo('url');
} elseif (is_category()) {
	$canonical_url=get_category_link(get_query_var('cat'));
} elseif (is_page() || is_single()) { 
	$canonical_url = get_permalink();
		} if ( $paged >= 2 || $page >= 2) {
	$canonical_url = $canonical_url.'page/'.max( $paged, $page ).'/';
} elseif(is_404()) {
	$canonical_url =  get_bloginfo('url')."/404";
} else {
	$canonical_url  = get_bloginfo('url');
} ?>
<link rel="canonical" href="<?php echo $canonical_url; ?>">

以上で設定完了。
これで適切に[Canonical URL]が吐き出されることになります。