2011.07.21SEO記事一覧

WordPressのtagページやcategoryページの<head>内に固有のcanonicalなどを埋め込む方法

  • このエントリーをはてなブックマークに追加

この記事をご覧いただいている皆様へ。

このページは、SEO情報ブログ「ディーエムソリューションズの社員が作った、【SEOまとめ】」にて公開されていた記事であり、2014年12月にデジタルマーケティング研究所へ統合されました。

blog-news

今回はWordPressのちょっとしたテクニックをご紹介します。
tagアーカイブページやブログcategoryページの<head>内に固有のcanonicalなどを埋め込む方法です。

経緯

本来意図しないハブページなどが記事ページより上位に表示されてしまって困っている方が多いようです。

この問題に関して@yukimeru0305さんも記事を掲載なさっています。
【まとめ】意図せず上位表示されているページよ、SERPsからサヨウナラ(世界へボカン通信)

WordPressを使ったサイトの場合tagアーカイブページの方が優先されて上位表示されることがよくあるようです。

先の記事でも一番に紹介されている通り、本来この問題に関してはサイト内リンクの調整が激的に効果を発揮します。(サイト内全ページから上位表示させたいページに対して目標キーワードを含むリンクを設定し、逆に上位表示したくないページへのサイト内リンクを外す

ただしtagアーカイブの場合はその性質上自動的に全ページからリンクをもらうことが多く、この方法は難しそうです。また、tagページを使い続けたい場合はリダイレクトするわけにもいきません。
有効なプラグインもなさそうだということで、Twitter上でも@pacificusさんを中心にtagアーカイブページ<head>内に固有のcanonicalを設定する方法の調査が行われました。
@Stocker_jpさん提供のヒントをきっかけに方法がみつかりましたので、今回はその調査報告ということになります。

header.php内でis_tag()を設定する

WordPressでtagアーカイブページの<head>内に任意の記述を埋め込みたいときはテンプレートファイルの「header.php」内で「is_tag() 」を使います。(categoryアーカイブページの場合は「is_category() 」)今回はこの「is_tag() 」とif文を組み合わせてカスタマイズします。

例えば全てのtagページを<meta name=”robots” content=”noindex,nofollow”>としたいときはheader.phpに以下のコードを記述します。

<?php if (is_tag()): ?>

<meta name=”robots” content=”noindex,nofollow”>

<?php endif; ?>

 
そのまま使うと全てのtagアーカイブページに設定されてしまいますので、is_tagの後の()の中に「スラッグ」(tagやcategoryを作るときに設定する文字列。URLになる)を指定することで特定のtagページやcategoryページのみに適用させることができます。
 

slug

スラッグは「’」で囲んでください。例えば「hogehoge」というtagページのみに<meta name=”robots” content=”noindex,nofollow”>を指定したいときは以下のコードです。
 

<?php if (is_tag(’hogehoge’)): ?>

<meta name=”robots” content=”noindex,nofollow”>

<?php endif; ?>

ハブページを固定ページにcanonicalするとどうなるのか?

さて、話は戻ってcanonicalの件。せっかくですのでハブページから固定ページに<link rel=”canonical”を指定する行為をGoogleが認識してくれるのかどうか、試してみることにします。

私はもともとtag機能に魅力を感じていませんでしたので、このブログにはtagページがありません。ですので代用として
categoryページから固定ページ(https://digital-marketing.jp/seo/foundation/
に対してcanonicalを指定します。
header.php内のコードは以下の通り。(HTML5用仕様。XHTMLの場合は<link>の末尾に「/」と半角スペースが必要です。)

<?php if (is_category(’business’)): ?>

<link rel=”canonical” href=”<?php bloginfo(’url’); ?>/foundation/”>

<?php endif; ?>

HTMLコードを見て<head>内を確認していただければcanonicalが設定されているのがわかると思います。

このページがsite:コマンド等でインデックスされなくなれば順位が入れ替わるかどうかはともかくcanonicalは有効だったと判断できますね。キャッシュが切り替わるまでしばらく待って、結果を報告したいと思います。

注意

Twitterにて@suzukikさんもおっしゃっていましたが、この方法はcanonical本来の使用方法ではありません。こういった使い方に対してはGoogleが気を使って(記述ミスと勘違いして?)無視することが多いです。

実は私自身も3ヶ月ほど前、どうしてもハブページ(商品カテゴリTOP)ではなくTOPページを上位表示させたいと言うお客様に対してリスクを説明した上でcanonicalを設定したことがありましたが、今も効果を発揮していません。

そして、本来推奨される方法と違った用い方をする以上、どんなトラブルが発生するかわかりません。もし試してみようという方がいらっしゃればくれぐれもご注意ください。

ちなみにtagアーカイブページとcategoryアーカイブページの内容が完全に重複している場合にどちらかにcanonicalするということであればまさに本来の用途ですし、今回ご紹介したテクニックが役に立つのではないかと思います。

 

  • このエントリーをはてなブックマークに追加
The following two tabs change content below.
片川 創太

片川 創太

2014年12月までディーエムソリューションズ株式会社SEO対策チームに所属。「SEOは実装」を信条に、コミュニケーションを重視するスタイルで数多くのサイトのコンサルティングを手がける。内部施策に関して造詣が深く、「SEOまとめ」というtwitterアカウントを通じて日々情報発信を続けている。 Twitter: SEOまとめ