WordPressのCanonical URLをより適切にする方法とプラグイン

SEOを考えるならCanonical URLも必要な要素の一つですね。

WordPressの場合、いくつか方法があります。

All in One SEO Packを使う方法だったり、header.phpに直接書き込む方法だったりがよく使われると思います。

ここでは、さらにもう一つよく使われるfunctions.phpに記述する方法を説明します。

必要な動作とPHPコード

PHPコードから行う動作は2つです。

  • デフォルトのcanonicalを削除
  • 適切なcanonicalを追加

まず「デフォルトのcanonicalを削除」ですが、以下のようにremove_actionを追加します。

remove_action('wp_head', 'rel_canonical');

これだけです。

次に「適切なcanonicalを追加」ですが、以下のようにadd_actionを追加します。

function add_canonical() {
	echo '<link rel="canonical" href="(適切なcanonical)">';
}
add_action( 'wp_head', 'add_canonical' );

Canonical URLについてはいろいろな考え方があると思います。私は以下のようにしました。

function add_canonical() {
	$canonical = null;

	if( is_home() || is_front_page() ) {
		$canonical = home_url();
	} elseif ( is_category() ) {
		$canonical = get_category_link( get_query_var('cat') );
	} elseif ( is_tag() ) {
		$tag = get_term_by( 'name', urldecode( get_query_var('tag') ), 'post_tag' );
		$canonical = get_tag_link( $tag->term_id );
	} elseif ( is_search() ) {
		$canonical = get_search_link();
	} elseif ( is_page() || is_single() ) {
		$canonical = get_permalink();
	}

	if( $canonical ) {
		echo '' . "\n";
	}
}

考え方としては以下のようなものです。

  1. ホームまたはフロントページの場合はサイトトップURL
  2. カテゴリーの場合はカテゴリー記事一覧ページのトップ(1ページ目)URL
  3. タグの場合はタグ記事一覧ページのトップURL
  4. サイト内検索の場合はサイト内検索結果のトップURL
  5. 固定ページまたは投稿ページの場合はそのページURL
  6. その他は出力しない

最後の「その他は出力しない」の部分は、常にサイトトップURLを追加するようにしてもいいかもしれませんね。

プラグインも作ってみました

上記コードをプラグインにしてみました。

Custom Canonicalダウンロードページ

WordPressのプラグインフォルダに突っ込んで、管理画面内のプラグイン画面から「Custom Canonical」を有効にするだけです。

プラグイン画面

プラグイン画面

今後アップデートしていこうかと思っています。

と同時に、今まではしたことがなかったWordPress公式の「Plugin Directory」に登録してみようかななんていうことも考えてたりします。

近いうちにトライしようかと思ってます。

スポンサードリンク

twitterまたはFacebookでもコメントして頂けます