Standing on the Shoulder of Linus

Home / 2014 / 10月 / 04 / SEO対策に、ヘッダーに出力されるrel=canonicalを消す方法

SEO対策に、ヘッダーに出力されるrel=canonicalを消す方法

WordPressでは、個別投稿の場合、ヘッダー部分にrel=canonicalが表示されます。

<link rel='canonical' href='http://example.com/hello-world' />

のように表示されます。この表示が行われる仕組みを、WordPress4.0で調べてみました。

rel=canonicalが表示される仕組み

WordPressのテーマにはヘッダー部分にwp_head()関数が埋め込まれています。rel=canonicalも、この部分で表示されています。

表示する関数は、wp-includes/link-template.phpにある、rel_canonical()関数です。

function rel_canonical() {
	if ( !is_singular() )
		return;

	global $wp_the_query;
	if ( !$id = $wp_the_query->get_queried_object_id() )
		return;

	$link = get_permalink( $id );

	if ( $page = get_query_var('cpage') )
		$link = get_comments_pagenum_link( $page );

	echo "<link rel='canonical' href='$link' />\n";
}

個別投稿の場合に、canonical属性を追加します。is_singular()で判定しているので、投稿、固定ページの双方が対象となります。皆さんのブログでも、固定ページでもcanonical属性が表示されているはずです。

フックで実行されている

さて、wp-includes/link-template.phpではrel_canonical()関数が定義されていました。ではrel_canonical()関数はどこで実行されているのでしょうか。実行場所は、wp-includes/default-filters.phpにある、

add_action( 'wp_head', 'rel_canonical' );

が決めています。add_action()関数は、関数の実行場所を決める関数です。上の例は、「wp_headのところで、rel_canonicalを実行せよ」という命令になります。

フックを無効にする

rel=’canonical’を表示させたくない場合は、rel_canonical()関数を実行させないようにすればよいですね。そのためにはどうすれば良いでしょうか。

wp-includes/default-filters.php を書き換えて、

/* add_action( 'wp_head', 'rel_canonical' ); */

とすることもできます。WordPressでは「/*」と「*/」の間はコメントとみなされるので、add_action( … ) の部分は実行されません。しかし、この方法だと、WordPress本体をアップデートすると元に戻ってしまいます。

テーマのfunctions.phpに書き加える

WordPress本体のコードは書き換えずに、自分のテーマのfunctions.phpに書き加えれば、WordPress本体をアップデートしても、自分で編集したコードが維持されます。

remove_action( ‘wp_head’, ‘rel_canonical’ );

と記述します。remove_action()関数は、add_action()関数を打ち消す関数です。

こうすることで、WordPressの標準で出力するrel=’canonical’を消す事ができました。

検索エンジン最適化等の目的で、自分でrel=’canonical’の出力をカスタマイズしたい場合は、このように標準の出力を消してからカスタマイズすると、「標準の出力と自分の出力の両方を表示してしまう」といったミスが防げます。

関連

Posted in WordPress | Tagged SEO, ヘッダー, 検索エンジン
← ocn モバイル oneを契約し、 GL04Pで使ってみた(ocnユーザーなら月700円から) WordCamp開催記念で20%オフ!プラグイン診断をはじめます。 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.