WordPressテーマのCocoonでブログを運営していて、Search Consoleやサイトマップを確認していると、タグページやアーカイブページまでGoogleに認識されていることに気づきました。
投稿記事を検索に出したいのに、タグページや一覧ページまで検索対象になっている。
これは少し整理した方がよさそうだと思い、Cocoon設定を見直しました。
Cocoonでは、タグページやその他のアーカイブページは、設定画面から簡単にnoindexにできます。
しかし、僕の環境では一つだけ問題が残りました。
それが、
/page/2/
です。
トップページの2ページ目以降、いわゆるページ送りのページです。
Cocoon設定でnoindexにできる項目にはチェックを入れたのに、/page/2/ だけはnoindexになっていませんでした。
この記事では、Cocoonで /page/2/ をnoindexにする方法をまとめます。
結論から言うと、functions.phpを直接触るのではなく、Code Snippetsというプラグインを使って対応するのがおすすめです。
今回やりたいこと
今回やりたいのは、次のようなページをnoindexにすることです。
https://example.com/page/2/
https://example.com/page/3/
https://example.com/category/xxx/page/2/
こういった一覧ページの2ページ目以降を、Googleの検索結果に出さないようにします。
検索してほしいのは、あくまで記事本体です。
一覧ページの2ページ目が検索結果に出ても、読者にとってはあまり便利ではありません。
そのため、投稿記事はindexのままにして、page/2以降だけnoindexにします。
タグページはCocoon設定でnoindexにできる
まず、タグページや一部のアーカイブページは、Cocoon設定からnoindexにできます。
WordPress管理画面で、次の場所を確認します。
Cocoon設定
SEO
headタグ設定
このあたりに、noindex関連の設定があります。
僕の環境では、カテゴリページをnoindexにする以外は、基本的にチェックを入れました。
カテゴリページは、主要カテゴリとして使う可能性があるため、indexのままにしています。
一方で、タグページやその他のアーカイブページは、検索結果に出す必要がないと判断しました。
タグは記事管理や読者の回遊には使えます。
しかし、タグページ自体を検索で上位表示させたいわけではありません。
そのため、タグページはnoindexにしました。
問題は /page/2/ だけだった
Cocoon設定でnoindexにできるものは設定しました。
しかし、確認してみると、
/page/2/
だけはnoindexになっていませんでした。
やり方は簡単です。
まず、対象ページを開きます。
https://example.com/page/2/
次に、ブラウザでページのソースを表示します。
Windowsなら右クリックから「ページのソースを表示」。
Macでも右クリック、またはブラウザのメニューからソースを表示できます。
ソースを開いたら、ページ内検索で次の文字を探します。
noindex
ここで noindex が見つかれば、そのページにはnoindexが入っています。
逆に、noindex が見つからなければ、そのページはnoindexになっていません。
僕の環境では、タグページなどはnoindexになっていました。
しかし、/page/2/ だけはnoindexが見つかりませんでした。
functions.phpを直接触るのはおすすめしない
この問題を解決するには、WordPressにコードを追加する必要があります。
ただ、ここでいきなり functions.php を直接編集するのはおすすめしません。
functions.php は、書き方を間違えるとサイトが真っ白になることがあります。
特に、WordPressやPHPに慣れていない人にとってはかなり不安な作業です。
そのため、この記事では functions.php を直接触りません。
Code Snippetsというプラグインを使います。
Code Snippetsを使えば、管理画面から安全にPHPコードを追加できます。
万が一コードに問題があっても、スニペット単位で停止しやすいため、functions.phpを直接編集するより安心です。
この記事では、Code Snippetsで対応します。
Code Snippetsをインストールする
まず、WordPress管理画面からプラグインを追加します。
プラグイン
新規追加
Code Snippetsで検索
インストール
有効化
有効化すると、管理画面のメニューに「スニペット」が追加されます。
そこから新しいスニペットを作成します。
page/2をnoindexにするコード
Code Snippetsで新しいスニペットを作成し、以下のコードを貼り付けます。
// page/2 以降の一覧ページを noindex にする
add_filter( 'wp_robots', function( $robots ) {
if ( is_paged() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
unset( $robots['index'] );
}
return $robots;
} );
タイトルは、自分が分かりやすい名前で大丈夫です。
たとえば、
page2をnoindexにする
でよいです。
設定は「サイト全体で実行」にします。
保存して有効化します。
これで、/page/2/ 以降の一覧ページにnoindexが入るようになります。
このコードで何をしているのか
コードの意味も簡単に説明します。
is_paged() は、WordPressで「現在のページが2ページ目以降のページ送りかどうか」を判定する関数です。
たとえば、
/page/2/
/page/3/
/category/english/page/2/
のようなページで true になります。
その場合に、robotsタグへ noindex を追加しています。
つまり、このコードは、
2ページ目以降の一覧ページだったらnoindexにする
という処理です。
投稿記事そのものをnoindexにするわけではありません。
固定ページをnoindexにするわけでもありません。
トップページの1ページ目をnoindexにするわけでもありません。
対象は、page/2以降のページ送りです。
設定後に確認する方法
設定したら、必ず確認します。
確認するページはこちらです。
https://example.com/page/2/
自分のサイトのURLに置き換えてください。
ページを開いたら、右クリックで「ページのソースを表示」を選びます。
ソースを開いたら、検索します。
noindex
次のような記述が見つかればOKです。
<meta name="robots" content="noindex, follow">
または、robotsタグの中に noindex が含まれていれば大丈夫です。
確認するときは、トップページではなく、必ず /page/2/ を見ます。
トップページにnoindexが入っていたら大問題です。
確認するのは、
https://example.com/page/2/
です。
カテゴリページの2ページ目も確認する
トップページの /page/2/ が確認できたら、カテゴリページの2ページ目も確認します。
たとえば、英語カテゴリがあるなら、
https://example.com/category/english/page/2/
のようなURLです。
ここでもページのソースを表示し、noindexを検索します。
noindexが入っていればOKです。
カテゴリページ自体はindexのままでも、カテゴリページの2ページ目以降だけnoindexにできます。
これが今回やりたかったことです。
robots.txtでは対応しない
ここで注意したいのが、robots.txtでブロックしないことです。
検索結果に出したくないページがあると、
robots.txtでDisallowすればいいのでは?
と思うかもしれません。
しかし、今回の目的ではrobots.txtは使いません。
robots.txtは、検索エンジンのクロールを制御するためのものです。
noindexは、検索結果に出さないようにするためのものです。
page/2を検索結果に出したくないなら、noindexを使います。
robots.txtでブロックしてしまうと、Googleがそのページをクロールできず、noindexを確認できないことがあります。
そのため、今回の対応は、
robots.txtでブロックしない
page/2にはアクセスできる状態にする
meta robotsでnoindexを入れる
という方針です。
サイトマップからも不要なURLは外す
noindexとあわせて、サイトマップも整理しておくとよいです。
サイトマップは、Googleに見てほしいURLを伝えるためのものです。
そのため、検索結果に出したくないタグページやpage/2系のURLを積極的に送る必要はありません。
僕の場合も、タグのサイトマップは不要だと判断して外しました。
投稿記事のサイトマップは残します。
固定ページのサイトマップも、プロフィール、運営者情報、お問い合わせ、プライバシーポリシーなどは残して問題ないと考えています。
重要なのは、Googleに評価してほしいページを絞ることです。
投稿記事を検索に出したいなら、投稿記事を中心にサイトマップを整理します。
タグページやpage/2のような一覧ページは、検索流入を狙わないならサイトマップから外しておきます。
Search Consoleではすぐに消えない
noindexを設定しても、Search Consoleからすぐに消えるとは限りません。
Googleが次にそのページをクロールし、noindexを確認してから反映されます。
そのため、設定直後にSearch Consoleを見ても、まだ表示されていることがあります。
焦らなくて大丈夫です。
まずは自分のブラウザでソースを確認し、noindexが入っていることを確認します。
そのうえで、Search ConsoleのURL検査を使って確認します。
対象URLを入力し、公開URLをテストします。
そこでnoindexが検出されれば、設定としては問題ありません。
今回の対応まとめ
今回やったことを整理します。
Cocoon設定で、タグページやその他のアーカイブページをnoindexにした。
ただし、/page/2/ だけはnoindexになっていなかった。
functions.phpを直接触るのは不安なので、Code Snippetsを使った。
is_paged() で2ページ目以降を判定した。
wp_robots フィルターで noindex, follow を追加した。
ソースを表示して noindex が入っていることを確認した。
これで、検索に出したい投稿記事と、検索に出さなくてよい一覧ページを整理できます。
まとめ:Cocoonでできないpage/2だけコードで対応する
CocoonはSEO設定がかなり充実しています。
タグページやアーカイブページのnoindexは、管理画面から簡単に設定できます。
ただし、僕の環境では /page/2/ だけnoindexになりませんでした。
その場合は、Code Snippetsを使って、page/2以降だけnoindexにするのが分かりやすいです。
functions.phpを直接触る必要はありません。
Code Snippetsにコードを貼り付け、有効化する。
その後、/page/2/ のソースを表示して noindex を確認する。
やることはこれだけです。
ブログで本当に検索に出したいのは、基本的には記事本体です。
タグページや一覧の2ページ目ではありません。
検索に出したいページと、出さなくてよいページを整理するだけでも、Search Consoleの見通しはかなり良くなります。


コメント