【WordPress】特定のカテゴリページやタグページにnoindexを設定する方法

【WordPress】カテゴリやタグなど特定のページにnoindexを設定する方法

くるみ

Search Console見たら、アーカイブのページとかがインデックスされてたんだけど
ということで今回は

  • カテゴリとかタグのアーカイブページをnoindexにしたい
  • できるならプラグインを使わずに設定したい

という方に向けて、WordPressでカテゴリ・タグなど特定のページにnoindexを設定する方法を解説します。

本記事を参考にすれば、プラグインを使わずにfunctions.phpにコピペするだけで任意のページにnoindexを設定できるようになります。

カテゴリページやタグページにnoindexを設定すべき理由

この辺りは意見が割れるところではありますが、僕はカテゴリやタグといったアーカイブページにはnoindexを設定すべきと考えます。

その理由は以下の通り。

  • 低品質コンテンツと判断されてしまうため
  • 検索流入が見込めないため
  • 他のページにクローラーのリソースを割けるため

低品質コンテンツと判断されてしまう

低品質コンテンツと判断されてしまう
カテゴリやタグのアーカイブのページなんてのは、Googleのロボットからすればただの「リンクが貼ってあるページ」に過ぎません。

つまり低品質なコンテンツと判断されかねないわけですね。

そこでそのようなページをnoindexに設定しインデックスさせないことによって、サイト全体の評価が下がることを防げます。

なお、低品質なコンテンツがサイトの一部にしか存在しない場合でも、サイト全体の掲載順位に影響を与えることがあるということにご注意ください。低品質なページを削除したり、内容の薄いページをまとめて役に立つコンテンツに改善したり、もしくは低品質なコンテンツを他のドメインに移動させたりすることが、最終的に良質なコンテンツの掲載順位を改善することにつながります。

引用元:良質なサイトを作るためのアドバイス – Googleウェブマスター向け公式ブログ

Google公式も上のように言及しているように、サイト内の低品質なコンテンツを削除することは少なからずSEO的にプラスの効果があります。

低品質の記事ならまずリライトするのが鉄板ではありますが、カテゴリやタグといったアーカイブページはそうもいきませんからね。

とはいえカテゴリ・タグページそのものを削除してしまってはサイト内でユーザーが記事を見つけにくくなりユーザビリティが悪くなってしまうので、検索結果に表示させないnoindexに設定するのが妥当なのです。

サイトリンクにカテゴリを表示させたいなら話は別だけどね

くるみ

検索流入が見込めない

超大手のサイトなら「サイト名 + カテゴリ名」での流入も見込めるかもしれませんが、個人ブログの場合そういったキーワードで流入してくることはまずありません。

とあるジャンルの記事群をインデックスさせたいなら、カテゴリページをインデックスさせるのではなく「まとめ記事」を作るのが正しい選択になります。

確かにカテゴリページの代わりにまとめ記事を作ってる人はよく見るかも

くるみ

そしてタグページ。こちらに関しては1記事に複数個設定できるその性質上、自ずとカテゴリよりも数は増えてしまいますし、尚更インデックスさせる意味は無いと思います。

タグはカテゴリほどSEO的に重要な役割を持ちませんし、管理も大変になります。
よって、話の論点からは少し逸れますが「そもそも記事にタグを付けないようにする・タグ機能を使わない」というのも1つの手かもしれません。

WordPressで特定のカテゴリページやタグページにnoindexを設定する方法

「All in one SEO pack」などのプラグインを使う方法もありますが、その類のプラグインはとても重く、利便性と引き換えにサイトのパフォーマンスを低下させてしまいます。

そこで今回は、functions.phpにコードを数行追記するだけで実現する方法をご紹介します。

テンプレートファイルを直接いじるわけではないのでハードルは低いものになっていますよ。

注意
ハードルが低いといっても記述を間違えると画面が真っ白になることに変わりはないので、事前にバックアップを取っておくことをおすすめします。

カテゴリページの場合

//全カテゴリページにnoindex付与
function set_noindex(){
  if ( is_category() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

全カテゴリーのアーカイブに設定したい場合。

//特定のカテゴリページにnoindex付与
function set_noindex(){
  if ( is_category( 'カテゴリID' ) ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

こちらは特定のカテゴリの「アーカイブ」のページに設定したい場合。

特定のカテゴリに所属する「投稿」が対象ではないのでご注意ください。

タグページの場合

//全タグページにnoindex付与
function set_noindex(){
  if ( is_tag() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

全タグのアーカイブに設定したい場合。

//特定のタグページにnoindex付与
function set_noindex(){
  if ( is_tag( 'タグID' ) ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

こちらは特定のタグの「アーカイブ」のページに設定したい場合。

特定のタグを登録した「投稿」が対象ではないのでご注意ください。

特定のカテゴリに所属するページの場合

//特定のカテゴリに所属するページにnoindex付与
function set_noindex(){
  if ( in_category( 'カテゴリID' ) ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

「〇〇カテゴリの投稿はnoindexにしたい」という場合。

投稿者アーカイブの場合

//投稿者アーカイブにnoindex付与
function set_noindex(){
  if ( is_author() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

いわゆる「作成者ページ」です。

複数人で運営しているならまだしも、1人でサイトを運営している方はnoindexに設定して問題ないでしょう。

「次のページ」や2ページ目以降の場合

//2ページ目以降にnoindex付与
function set_noindex(){
  if ( is_paged() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

トップページにページネーションが無くとも、ほとんどのサイトで「page/n」というページが存在しています。

こちらテーマ側で設定できないものの方が多いので、今回のように追記して設定してあげましょう。

特定の投稿や固定ページの場合

//特定の投稿や固定ページにnoindex付与
function set_noindex(){
  if ( is_single( '記事ID' ) ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

今時のテーマでは記事の編集画面でnoindexを設定できるものがほとんどです。

テーマ側で設定できるならそっちで設定するに越したことはありません。

複数の条件を指定する場合

//カテゴリページとタグページにnoindex付与
function set_noindex(){
  if ( is_category() || is_tag() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
add_action('wp_head', 'set_noindex');

「カテゴリページとタグにnoindexを設定したい」といったようにこれまで紹介してきたケースを組み合わせたい場合は、上のようにif文の条件を変えてあげればOKです。

//全カテゴリページにnoindex付与
function set_noindex(){
  if ( is_category() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

//全タグページにnoindex付与
function set_noindex(){
  if ( is_tag() ) {
    echo '<meta name="robots" content="noindex,follow" />';
  }
}
set_action('wp_head', 'set_noindex');

間違ってもこのように別々に同じ関数を作って呼び出す、ということは避けるようにしましょう。(関数名が違えばこの書き方でも問題はありませんが、冗長な書き方なのでおすすめしません。)

まとめ

以上、WordPressでカテゴリ・タグなど特定のページにnoindexを設定する方法でした。

低品質と判断されかねないページがインデックスされていないかの「noindex漏れ」が無いかをSearch Consoleで定期的にチェックしておきたいですね。

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

コメントを残す

この記事を書いた人
おはようポテトのプロフィール画像
おはようポテト

22年4月から自社開発企業のWebエンジニアとして働く大学生。このサイトでは主にプログラミングやWordPressカスタマイズについて発信しています。他に運営しているのは宅配冷凍弁当の特化ブログなど。お問い合わせはこちらよりどうぞ。