SEO施策・サイト評価を守れ!WordPress重複コンテンツ対策

重複コンテンツ解消

SEO上、サイトを適切に評価してもらうためには、重複コンテンツは無い方が良いのですが、知らぬ間にWordPressサイトで重複コンテンツを発生させてしまうケースがあります。

ここでは、ありがちな重複コンテンツ発生原因とその背景、重複を解消するための対処方法までを解説しています。

重複コンテンツとは?

重複コンテンツとは、非常に端的に言えば、

同じ内容(コンテンツ)のページがあるとクローラーが認識した場合に起こる

ものです。

重複するコンテンツの詳細をより深く理解するには、Search Consoleヘルプの「重複するコンテンツ」のページを一度は読んでおいておくことをおすすめしますが、

Search Consoleヘルプ「重複するコンテンツ」
https://support.google.com/webmasters/answer/66359?hl=ja

どちらかといえば、記事のパクリや同じコンテンツを使ってたくさんのサイトを作るなどのスパム行為がまかり通らないようにするためのもので、

ガイドラインを逸脱しないまともなSEOをしているWordPressサイトのWEBマスターさんなら、次のひとつのことだけに注意しておけば重複コンテンツを避けることが出来ます。

そのひとつとは、『WordPressの仕組み上作られるアーカイブページの設定』です。

WordPressサイトで重複コンテンツが発生するありがちな原因

WordPressで気づかないうちに発生してしまう重複コンテンツの多くは、以下の場合です。

コンテンツ管理システムについて理解する:
コンテンツがウェブサイトで表示される仕組みをよく理解しておきます。

ブログやフォーラムなどのシステムでは、同じコンテンツが複数のフォーマットで表示されることがよくあります。

たとえば、ブログのエントリは、ブログのホームページ、アーカイブ ページ、同じラベルを持つ他のエントリのページに表示されることがあります。

引用:Search Consoleヘルプ「重複するコンテンツ」

コンテンツ管理システムとは、WordPressのようなCMSのことです。

WordPressには、カテゴリ、タグ等の一覧(:アーカイブ)ページを自動的に作成する機能があります。

このとき、自動作成されるこれらのアーカイブページを適切にnoindexにしていないと、

  • ブログ一覧ページ = 投稿者の記事アーカイブページ
    • 投稿者がひとりでブログを運営している場合、ブログが最新のものから全てが並ぶブログの一覧ページと投稿者の記事一覧ページが全く同じ内容のページになる。
  • カテゴリ「A」アーカイブページ = タグ「A」アーカイブページ
    • カテゴリ名とタグ名に全く同じ「A」があり、分類される記事も同じだった場合、2つのアーカイブページが全く同じページになる

といったことが発生し、これらが重複コンテンツになってしまいます。

さらに、重複が起こるよくある原因がもうひとつあります。

それは、アーカイブページが増えること、です。

記事数増 → アーカイブページのページ増 → 重複コンテンツ増?

こういった動的に生成されるアーカイブページは、記事が多くなってくると2ページ目、3ページ目が作られていきます。
例カテゴリアーカイブ

この時、設定がされていないテーマの場合、1ページ目のタイトルとディスクリプションが2ページ目のそれと同じになってしまいます。
カテゴリページでの重複コンテンツ発生例図解

1ページ目と2ページ目のページの内容は当然違うのですが、

タイトルとディスクリプションが同じ=同じ内容のページだと判断される → 重複コンテンツ発生

というパターンです。

この点から見ても、SEO上、タイトルとディスクリプションに注意を払うことの重要性がわかりますね。

ちょっと待って!ディスクリプションって何?

ディスクリプションは、ヘッダー内に置いて、クローラーにページの概要を伝えるもので、インデックスされるデータの中でも重要度が高いものです。

クローラーに理解してもらえるよう、descriptionメタタグとしてヘッダー内に置きます。

HTMLで記述した場合のdescriptionメタタグは以下のようになります。

<meta name="description" content="ココにページの概要・説明文を入れる"/>

検索ユーザーの検索キーワードにマッチするように、インデックスされているページ内容に合わせて、検索結果の説明文(スニペットという)がdescriptionメタタグの内容と違ったものに変更される場合もありますので、

必ずしもその記述が検索結果の説明文として表示されるとは限らないのですが、

狙ったキーワードにマッチした内容になっていれば、そのキーワードで検索された時の検索結果上のページの説明文にdescriptionメタタグがそのまま使われます。

検索結果上のどのページを開くかをページの説明文で判断する検索ユーザーも多いことを考えれば、この記述はタイトルと同様、重要です。

メタタグとは?

metaタグはウェブページのヘッダー内に記述し、クローラーにページの情報を伝えることができるタグです。

Googleがサポートしているメタタグについての詳細ページはこちら
「Google がサポートしているメタタグ」

さて、カテゴリやタグ等のアーカイブページについては、これらをnoindexにしていれば、テーマが対応していなくてもこの問題は起こらないのですが、ブログ一覧ページについてはどうでしょうか?

ブログを書けば書くほど重複コンテンツが増えてしまう理由

WordPressはもともと、ブログサイト構築システムなので、新しいブログから順番にトップページにアイキャッチと抜粋の記事の一覧ページになっているテーマが多いですよね。

ブログ記事が増えてくると、全てのページをブログ一覧ページのトップページに載せることは難しくなってきます。

例えば、ブログ一覧ページに10記事分のアイキャッチと抜粋が1ページに載るようなテーマの場合、11個目の記事からは2ページ目に表示されるようになります。
ブログ一覧ページ

このとき、2ページ目以降は、2ページ目、3ページ目だということがクローラーにわかるようになっているテーマでない場合、

もう少し詳しく言うと、

『ページ数をタイトルやディスクリプションにページ数を付け加えて、2ページ目、3ページ目であることがクローラーにも伝わるようにしていないテーマを使用している』

場合には、

ページタイトルと、ページディスクリプションが1ページ目も2ページ目も3ページ目も同じものになってしまい、結果、先に述べた重複が起こってしまいます。
ブログアーカイブで重複コンテンツが発生する場合

つまり、気づかないうちに重複コンテンツを量産・・なんてことが起こりうる、というわけです。

重複コンテンツが増えると何が問題?

コレが問題なのは、サイト評価を下げてしまうことがあるから、です。

重複コンテンツについての以下の記事がとても参考になります。

「重複コンテンツはスパムでGoogleにペナルティを受ける」は、なぜ間違いなのか
https://www.suzukikenichi.com/blog/duplicate-content-is-not-spam/

一生懸命ブログ記事を書いてアクセスもサイトの評価も上げたいと思っているだけなのに、

書けば書くほど重複コンテンツが量産される状態になっていて、サイト評価を下げてしまうという皮肉な状態になってはいませんか?

そんなことになっていないかどうかを調べられるのが、サーチコンソールのHTMLの改善です。

重複コンテンツの有無を調べるには

この重複が起こっていると判断されているかどうかは、サーチコンソールの検索での見え方 → HTMLの改善をクリックして開くと確認できます。
サーチコンソールHTMLの改善

問題が発生していない場合は、以下のような表示になります。
HTMLの改善ページ

以下のような重複コンテンツのリストが表示されていたら、対策が必要です。
HTMLの改善ページ・重複するmetaデータ

重複コンテンツを解消するには

対処法は、以下の4つです。

  • ページ数をタイトルとディスクリプションにつける
    • 対応するプラグインを入れる
    • header.phpにmetaタグの記述をする
  • noindexにする
    • プラグインで2ページ目以降をnoindexにする
    • header.phpに記述をしてページ目以降をnoindexにする

では、順に見ていきましょう。

2ページ目以降もインデックスさせつつ、重複コンテンツを避けるには

ブログ一覧ページの2ページ目以降もインデックスさせたい、という場合は、

2ページ目以降を2ページ目以降だとちゃんとクローラーに伝えられるように、タイトルとディスクリプションにページ数をつける設定をすれば、重複コンテンツだと認識されることはなくなります。

プラグインなら、Yoast SEOがおすすめ

ページ数を付け加えつつ、descriptionメタタグをヘッダー内に生成させるのに、プラグインで対応するなら「Yoast SEO」が良いと思います。

Yoast SEOhttps://ja.wordpress.org/plugins/wordpress-seo/

インストール→有効化するだけで、ブログ一覧ページの2ページ目からのタイトルにページ数がデフォルトで追加されます。

ディスクリプションは、テーマによってブログ一覧ページがどのテンプレートで表示されているかが違うので、全ての場合を説明するのは難しいのですが、

Twentyからはじまるデフォルトテンプレートの場合は、タイトル&メタのホームページのディスクリプションを以下のように設定すればOKです。
Yoast SEOータイトル&メタの設定

ただし、このプラグインはWordPressサイトのSEO強化するための総合プラグインですので、他のSEO対策プラグインとバッティングする可能性があります。

使用するのであれば、乗り換えをおすすめします。

プラグインではなく、タグの書き換えで対処するには

WordPressサイトで、ディスクリプション+ページ数となるdescriptionメタタグをヘッダー内に生成するには、header.phpにディスクリプションを生成するタグを<head>~</head>内に記述すればOK。

具体的にはタイトルやディスクリプションにページ数をつける以下のタグを追加すればOKです。

<?php if(get_query_var('paged')) echo '| Page'.get_query_var('paged'); ?>" />

この一行は、最初の if~でページが2ページ目以降かどうかを判定し、2ページ目以降ならecho~の記述でページ数を表示させるタグです。

TwentyからはじまるWordPressのデフォルトテーマは、タイトルのページ数は出力されるようになっていますので、設定する必要は特にありません。

しかし、descriptionメタタグはヘッダー内に生成されません。

WordPresのデフォルトテーマに、適切なdescriptionメタタグをヘッダー内に生成するには、以下のようなタグを追加します。

<!-- meta-description -->
<?php if (is_single() || is_page()): ?>
<?php
$excerpt =strip_tags(get_the_excerpt());//HTMLタグ等削除
$excerpt = str_replace(array("Read More"), '', $excerpt);//Read More削除
?>
<meta name="description" content="<?php echo $excerpt; ?>"><?php if(get_query_var('paged')) echo '| Page'.get_query_var('paged'); ?>" />
<?php elseif (is_home()): ?>
<meta name="description" content="◆ココにブログページの説明文を入れる◆<?php if(get_query_var('paged')) echo '| Page'.get_query_var('paged'); ?>" />
<?php endif ; ?>
<!-- end meta-description -->

上のタグは、投稿ページや、固定ページの抜粋欄の記述をdescriptionメタタグに使用する場合です。

ブログのページを固定ページに指定している場合でもその抜粋欄の説明文を利用できないので、タグ内にブログページの説明を入れておきます。

投稿ページや、固定ページにはプラグインを使って抜粋欄の内容をdescriptionメタタグとして生成しているから、ブログ一覧ページだけで良いという場合には、以下のようになります。

<!-- home meta-description -->
<?php if (is_home()): ?>
<meta name="description" content="◆ココにブログページの説明文を入れる◆<?php if(get_query_var('paged')) echo '| Page'.get_query_var('paged'); ?>" />
<?php endif ; ?>
<!-- end home meta-description -->

コピペする場合には、◆ココにブログページの説明文を入れる◆の部分を編集して下さい。

Twentyからはじまるデフォルトテーマ以外のテーマで、ページ数が自動出力されないテーマの場合は、タイトルにも先のページ数を表示させるタグを追加します。

タイトルは、

<title><?php wp_title( '|', true, 'right' ); ?></title>

といった記述になっていると思いますが、コレを以下のように変更すればOKです。

<title><?php wp_title( '|', true, 'right' ); ?><?php if(get_query_var('paged')) echo '| Page'.get_query_var('paged'); ?></title>

ブログ一覧ページの2ページ目以降をインデックスさせなくてもいいなら、noindexに設定する

あまり内容のないページとしてブログ一覧ページの2ページ目以降をnoindexにしたいという場合は、以下のようなタグを、子テーマheader.phpに追記すればOK。

<?php if(is_home() && is_paged()): ?>
<meta name="robots" content="noindex,follow">
<?php endif; ?>

ちなみに、もしカテゴリーなどの他のアーカイブページもnoindexにしていて、以下のようなタグを子テーマheader.phpに既に記述してある場合は、

<?php if( is archive() || is_search() || is_404() || is_attachment()): ?>
<meta name="robots" content="noindex,follow" />
<?php endif; ?>

下のような、先のタグと合わせたタグと差し替えればOKです。

<?php if( is archive() || is_search() || is_404() || is_attachment()): ?>
<meta name="robots" content="noindex,follow" />
<?php elseif (is_home() && is_paged()): ?>
<meta name="robots" content="noindex,follow" />
<?php endif; ?>

プラグインのAll in One SEO Packには、全てのアーカイブページの2ページ目以降を一括でnoindexに設定する機能があります。ここに✔を入れれば、当然重複も起こらなくなります。
All in one seo2ページ目以降をnoindexにする

とはいえ、やっぱりブログ一覧ページはindexさせる方が適切な気がする。

どのページをnoindexにするかしないかは好みや考え方もあるので、一概にはどれが正解、とは言い切れませんが、

  • SEOの情報を発信している、有名サイトのブログ一覧ページの2ページ目以降がnoindexにされているかどうか?をいくつか見てまわったが見つからなかった
  • この機能がある、All in One SEO Packの取説ページでもチェックが外れている
    http://semperplugins.com/documentation/noindex-settings/

などのことから、やはりブログ一覧ページの2ページ目以降はindexさせるのが妥当ではないかと思います。

ではでは、今日はこの辺で。

お役に立ちましたら、シェアなどしていただけるとうれしいです(^^)

Published:2016/04/19

Written by

コメントを残す