カテゴリ・タグの重複対策|SEOを強くする正しい分類ルール
WordPressサイトを運営していると、「RSSやタグ、カテゴリ、アーカイブページが検索結果に表示されてほしくない」と思うことがあります。特に、ページ分割やソート機能によって生成されるURLにクエリパラメータが付くと、Googleから「重複コンテンツ」とみなされる可能性があります。この記事では、初心者から開発者向けまで、重複ページを正しく扱う方法を解説します。
1 なぜ重複ページを避けるのか?
RSS、タグ、カテゴリページは本文が少なく、同じ内容のページが複数存在する場合があります。Googleはこうしたページを「価値の低いページ」と判断し、SEO評価に影響することがあります。
2 対象となるURLの例
- クエリパラメータ付きページ:
https://example.com/category/tips?order=ASC - RSSフィード:
https://example.com/category/tips/feed - ページ分割:
https://example.com/category/tips/page/2
3 初心者向け対策
3.1 1. metaタグで noindex を設定する
(Lightningテーマ)ファイル名:header.php
保存先:wp-content/themes/child-theme/g2/header.php
(汎用テーマ、Cocoonテーマ)ファイル名:header.php
保存先:wp-content/themes/child-theme/header.php
ページの <head> 内に noindex を追加すると、Googleにインデックスさせないことができます。
<meta name="robots" content="noindex, nofollow">
3.2 ディレクトリ構造
- child-theme/
- g2/
- header.php←Lightningテーマ
- archive.php
- category.php
- functions.php
- footer.php
- header.php←汎用テーマ、Cocoonテーマ
- style.css
- js/
- loading.js
- g2/
3.3 2. functions.php で自動追加する場合
//---------------------------------------------
// RSS・タグ・カテゴリページをインデックスさせない
//---------------------------------------------
function add_noindex_for_feeds_tags_categories() {
if (is_feed() || is_tag() || is_category()) {
echo '<meta name="robots" content="noindex, nofollow">' . "\n";
}
}
add_action('wp_head', 'add_noindex_for_feeds_tags_categories');
ポイント: is_feed() → RSS、is_tag() → タグ、is_category() → カテゴリページに適用されます。
3.4 3. SEOプラグインを利用する場合
- Yoast SEO:カテゴリ・タグページで「検索で表示させない」にチェック
- Rank Math:投稿タイプごとに
noindex設定可能
3.5 4. robots.txt でクロールを補助的に制御
ファイル名:robots.txt
保存先:wp-content/themes/child-theme/robots.txt
User-agent: *
Disallow: /category/
Disallow: /tag/
Disallow: /feed/
注意:既にクロール済みのURLは robots.txt だけでは完全にインデックスを防げません。meta noindex と併用するのが確実です。
3.2 ディレクトリ構造
- child-theme/
- archive.php
- category.php
- functions.php
- footer.php
- header.php
- style.css
- robots.txt
4 中級者向け対策
4.1 canonicalで正規ページを指定する
タグやカテゴリページに canonical を設定して、検索エンジンに「このページは他のページが代表です」と伝える方法です。
(Lightningテーマ)ファイル名:header.php
保存先:wp-content/themes/child-theme/g2/header.php
(汎用テーマ、Cocoonテーマ)ファイル名:header.php
保存先:wp-content/themes/child-theme/header.php
<link rel="canonical" href="https://example.com/">
3.2 ディレクトリ構造
- child-theme/
- g2/
- header.php←Lightningテーマ
- archive.php
- category.php
- functions.php
- footer.php
- header.php←汎用テーマ、Cocoonテーマ
- style.css
- js/
- loading.js
- g2/
5 開発者向け対策
複数の条件(クエリパラメータ、RSS、ページ分割)をまとめて処理したい場合は、functions.php に共通関数を作ると便利です。
//-------------------------------------------
// カテゴリ・タグ・アーカイブの重複ページ対策
//-------------------------------------------
function custom_handle_duplicate_pages($mode = 'canonical') {
// クエリパラメータ ?order
if ((is_category() || is_tag() || is_archive()) && isset($_GET['order'])) {
if ($mode === 'canonical') {
$canonical = get_queried_object()->term_id
? get_term_link(get_queried_object())
: get_permalink();
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
} elseif ($mode === 'noindex') {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}
// RSSフィード (/feed)
if (is_feed()) {
if ($mode === 'canonical') {
$canonical = get_post_type_archive_link(get_post_type()) ?: home_url();
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
} elseif ($mode === 'noindex') {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}
// ページ分割 (/page/2 など)
if (is_paged()) {
if ($mode === 'canonical') {
$canonical = get_queried_object()->term_id
? get_term_link(get_queried_object())
: get_permalink();
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
} elseif ($mode === 'noindex') {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
}
}
// head にフックして実行
add_action('wp_head', function() {
// サイト方針に応じて 'canonical' か 'noindex' を選択
custom_handle_duplicate_pages('canonical');
});
6 ポイントまとめ
- 初心者は meta noindex や SEOプラグインの設定で簡単に対応可能
- canonical を設定して代表ページを明示することも有効
- 開発者は functions.php に共通関数を作り、自動で canonical または noindex を出力可能
- robots.txt は補助的に使うと良い
- どちらか一方を選ぶ:canonical か noindex を統一する
これらの方法を組み合わせることで、RSSやタグ、カテゴリページの重複コンテンツを防ぎ、サイト全体のSEO評価を向上させることができます。

