- タグページが「低品質コンテンツ」と判定されるリスクを排除する
- クロールバジェットの浪費を防ぎ、重要なページにGoogleの巡回を集中させる
- 投稿ページ下部・タグクラウドから中身の薄いタグを消す
- AdSense審査で不利になる「スカスカなアーカイブページ」を一掃する
WordPressのタグ乱立がもたらす3つの深刻な問題
タグの乱立はユーザビリティ低下・SEO悪化・AdSense不承認の3つのリスクを同時に生みます。記事が1〜2件しかないタグページは「低品質ページ」として扱われるためです。 まずは、タグを付けすぎることでどんな問題が起きるのかを整理しましょう。問題①:ユーザビリティの低下
読者がタグをクリックして、そのタグのアーカイブページに遷移したとします。そこに記事が1〜2件しか表示されなかったらどうでしょうか? 「このサイトはコンテンツが薄い」という印象を与え、すぐに離脱されてしまいます。 タグは本来、関連する記事をまとめて読者の回遊を促すための機能です。中身がスカスカのタグページは、この目的を完全に裏切っています。問題②:SEOへの悪影響
WordPressでタグを作成すると、そのタグごとにアーカイブページが自動生成されます。これらはすべてサイトマップに登録され、Googleのクローラーがインデックスしようとします。 登録数の少ないタグが大量にあると、以下のSEO上の問題が発生します。 低品質ページの量産:コンテンツの薄いページがGoogleに大量にインデックスされる クロールバジェットの浪費:Googleがサイトを巡回できる回数には限りがあり、無駄なページに使われてしまう 重複コンテンツのリスク:似たようなタグページが複数存在することで、評価が分散する Googleは「質の高いコンテンツ」を重視しています。中身のないタグページは、サイト全体の評価を下げかねません。問題③:AdSense審査への影響
Google AdSenseの審査では、サイト全体のコンテンツ品質がチェックされます。審査ボットはサイト内のページを巡回し、「価値のあるコンテンツが十分にあるか」を判断します。 中身の薄いタグページが何十、何百とあると、「低品質なページが多いサイト」と判定されるリスクがあります。実際に、タグページの整理後にAdSense審査に通ったという報告も少なくありません。解決策:投稿数の少ないタグを非表示にする
投稿数が一定数以下のタグを「404化」「noindex付与」「表示除外」の3段階で非表示にします。functions.phpにコードを追記するだけで、4つの対策が一括で適用されます。 今回は「4件以下」を基準にしていますが、この数値はお好みで調整できます。具体的には、以下の4つの対策を行います。 対策1:投稿数が少ないタグのアーカイブページを404にする 対策2:該当タグのアーカイブページにnoindexを付与する 対策3:投稿ページ下部のタグ表示から除外する 対策4:サイドバーのタグクラウドから除外する それでは、一つずつコードを見ていきましょう。すべてfunctions.php に追記するだけで完了します。
対策1:タグアーカイブページを404にする
投稿数が少ないタグのURLにアクセスされた場合、404ページを返します。読者が中身の薄いタグページに辿り着くことを防ぐ最初の砦です。
functions.php に追記してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * 投稿数が少ないタグのアーカイブページを404にする * * pre_get_posts でメインクエリのタグアーカイブを判定し、 * 投稿数がしきい値以下なら 404 を返す。 */ function raplsworks_block_low_count_tag_archive( $query ) { if ( is_admin() || ! $query->is_main_query() || ! $query->is_tag() ) { return; } $min_posts = 5; // この件数未満のタグを404にする(4以下を除外) $current_tag = get_queried_object(); if ( $current_tag && isset( $current_tag->count ) && $current_tag->count < $min_posts ) { $query->set_404(); status_header( 404 ); nocache_headers(); } } add_action( 'pre_get_posts', 'raplsworks_block_low_count_tag_archive' ); |
pre_get_posts フックを使って、メインクエリの段階でタグの投稿数を判定しています。get_queried_object() で取得できるタグオブジェクトの count プロパティが投稿数です。条件に合致すれば set_404() で404ページを返します。
冒頭で管理画面・サブクエリ・タグ以外を早期リターンしているため、他のクエリへの影響はありません。
対策2:noindexメタタグを付与する
対策1とあわせて該当タグページにnoindexを付与することで、万が一Googleにクロールされても検索結果に表示されなくなります。404化との二重の保険です。|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * 投稿数が少ないタグページに noindex を付与 * * wp_head でタグアーカイブ表示時に robots メタタグを出力する。 * follow は許可し、リンク先へのクロールは維持する。 */ function raplsworks_noindex_low_count_tag() { if ( ! is_tag() ) { return; } $min_posts = 5; $current_tag = get_queried_object(); if ( $current_tag && isset( $current_tag->count ) && $current_tag->count < $min_posts ) { echo '<meta name="robots" content="noindex, follow">' . "\n"; } } add_action( 'wp_head', 'raplsworks_noindex_low_count_tag' ); |
noindex を指定しつつ follow は許可しているので、そのページ内のリンク先は引き続きクローラーが辿ります。これにより、SEO上の悪影響を最小限に抑えながら、低品質ページのインデックスを防げます。
対策3:投稿ページ下部のタグ表示から除外する(Cocoon対応)
Cocoonの投稿ページ下部に表示されるタグ一覧から、投稿数の少ないタグを除外します。get_the_termsフィルターを使うため、テーマファイルの編集は不要です。 WordPressテーマ「Cocoon」では、投稿ページの下部にタグが一覧表示されます。ここにも投稿数の少ないタグが表示されていると、読者がクリックした先でガッカリすることになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/** * 投稿ページのタグ表示から投稿数の少ないタグを除外する * * get_the_terms フィルターで、フロントエンドの単一投稿ページかつ * post_tag に限定してフィルタリングする。 * 管理画面では全タグを表示するため除外しない。 */ function raplsworks_filter_post_tags( $terms, $post_id, $taxonomy ) { if ( is_admin() || 'post_tag' !== $taxonomy || ! is_singular( 'post' ) ) { return $terms; } if ( ! is_array( $terms ) ) { return $terms; } $min_posts = 5; $filtered = array_filter( $terms, function( $term ) use ( $min_posts ) { return $term->count >= $min_posts; }); return ! empty( $filtered ) ? $filtered : array(); } add_filter( 'get_the_terms', 'raplsworks_filter_post_tags', 10, 3 ); |
get_the_terms フィルターを使い、WordPressがタグを取得する段階でフィルタリングしています。Cocoonは内部的にこの関数を通じてタグを取得しているため、テーマのテンプレートを直接編集する必要はありません。
管理画面(is_admin())では通常通りすべてのタグが表示されるので、記事編集時にタグが見えなくなる心配もありません。
対策4:サイドバーのタグクラウドを最適化する
タグクラウドウィジェットに対して、投稿数の少ないタグの除外、記事件数順のソート、表示数の制限を1つの関数でまとめて適用します。 サイドバーにタグクラウドウィジェットを設置している場合、ここにも対策が必要です。投稿数の少ないタグがタグクラウドに表示されていると、クリックしても中身が薄いページに飛ばされてしまいます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/** * タグクラウドの表示を最適化する * - 投稿数が少ないタグ(しきい値未満)を非表示 * - 記事件数の多い順にソート * - 最大表示数を制限 */ function raplsworks_optimize_tag_cloud( $args ) { $min_posts = 5; // この件数未満のタグを非表示(4以下を除外) $max_display = 25; // タグクラウドの最大表示数 $args['orderby'] = 'count'; $args['order'] = 'DESC'; $args['number'] = $max_display; $args['hide_empty'] = true; // wp_generate_tag_cloud_data フィルターで投稿数が少ないタグを除外 add_filter( 'wp_generate_tag_cloud_data', function( $tags_data ) use ( $min_posts ) { return array_filter( $tags_data, function( $tag ) use ( $min_posts ) { return $tag['real_count'] >= $min_posts; }); }); return $args; } add_filter( 'widget_tag_cloud_args', 'raplsworks_optimize_tag_cloud' ); |
wp_generate_tag_cloud_data フィルターを登録し、投稿数がしきい値未満のタグをタグクラウドから除外します。
③ 表示数の制限:タグクラウドの最大表示数を25個に制限。多すぎるタグ表示によるレイアウト崩れを防ぎます。
しきい値($min_posts)と最大表示数($max_display)は関数の先頭で定義しているので、サイトの規模に合わせて調整しやすい構造になっています。
全コードまとめ:functions.phpにコピペするだけ
ここまでの4つの対策をまとめた完全版コードです。子テーマのfunctions.phpの末尾にコピペするだけで、すべての対策が一括で適用されます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
// ============================================================ // タグ管理:投稿数の少ないタグを非表示にする // しきい値は $min_posts で統一管理(5 = 4件以下を除外) // ============================================================ /** * 対策1:投稿数が少ないタグのアーカイブページを404にする */ function raplsworks_block_low_count_tag_archive( $query ) { if ( is_admin() || ! $query->is_main_query() || ! $query->is_tag() ) { return; } $min_posts = 5; $current_tag = get_queried_object(); if ( $current_tag && isset( $current_tag->count ) && $current_tag->count < $min_posts ) { $query->set_404(); status_header( 404 ); nocache_headers(); } } add_action( 'pre_get_posts', 'raplsworks_block_low_count_tag_archive' ); /** * 対策2:投稿数が少ないタグページに noindex を付与 */ function raplsworks_noindex_low_count_tag() { if ( ! is_tag() ) { return; } $min_posts = 5; $current_tag = get_queried_object(); if ( $current_tag && isset( $current_tag->count ) && $current_tag->count < $min_posts ) { echo '<meta name="robots" content="noindex, follow">' . "\n"; } } add_action( 'wp_head', 'raplsworks_noindex_low_count_tag' ); /** * 対策3:投稿ページのタグ表示から投稿数の少ないタグを除外する */ function raplsworks_filter_post_tags( $terms, $post_id, $taxonomy ) { if ( is_admin() || 'post_tag' !== $taxonomy || ! is_singular( 'post' ) ) { return $terms; } if ( ! is_array( $terms ) ) { return $terms; } $min_posts = 5; $filtered = array_filter( $terms, function( $term ) use ( $min_posts ) { return $term->count >= $min_posts; }); return ! empty( $filtered ) ? $filtered : array(); } add_filter( 'get_the_terms', 'raplsworks_filter_post_tags', 10, 3 ); /** * 対策4:タグクラウドの表示を最適化する * - 投稿数の少ないタグを非表示 * - 記事件数の多い順にソート * - 最大表示数を制限 */ function raplsworks_optimize_tag_cloud( $args ) { $min_posts = 5; $max_display = 25; $args['orderby'] = 'count'; $args['order'] = 'DESC'; $args['number'] = $max_display; $args['hide_empty'] = true; add_filter( 'wp_generate_tag_cloud_data', function( $tags_data ) use ( $min_posts ) { return array_filter( $tags_data, function( $tag ) use ( $min_posts ) { return $tag['real_count'] >= $min_posts; }); }); return $args; } add_filter( 'widget_tag_cloud_args', 'raplsworks_optimize_tag_cloud' ); |
導入前の注意点
functions.phpの編集はサイトに直接影響するため、必ずバックアップを取り、子テーマに追記してください。しきい値の数値はサイト規模に応じて自由に調整できます。 コードを追加する前に、以下の点を確認しておきましょう。必ずバックアップを取る
functions.php の編集はサイトに直接影響します。編集前に必ずバックアップを取ってください。万が一エラーが出た場合、FTPやファイルマネージャーから元に戻せるようにしておきましょう。
子テーマを使う
親テーマのfunctions.php を直接編集すると、テーマのアップデート時に変更が上書きされてしまいます。Cocoonの子テーマを導入し、子テーマの functions.php にコードを追記するのがベストプラクティスです。

しきい値は自由に調整できる
今回は「4件以下を除外($min_posts = 5)」を基準にしていますが、サイトの規模や記事数に応じて調整してください。各関数の $min_posts の数値を変えるだけです。たとえば「2件以下」にしたい場合は $min_posts = 3 に変更します。すべての関数で統一することを忘れないでください。
なお、functions.php の編集でCSS更新が反映されないなどのキャッシュ問題に遭遇した場合は、以下の記事で切り分け方法をまとめています。
この対策で得られる効果まとめ
低品質タグページの排除により、SEO品質シグナルの向上・クロールバジェットの最適化・AdSense審査通過率の改善・ユーザー回遊率の向上が見込めます。 最後に、今回の対策がもたらす効果を整理します。 ユーザビリティ向上:読者がタグをクリックした先には、必ず充実した記事一覧が表示されます。回遊率の向上や離脱率の低下が期待できます。 SEOの改善:低品質なタグページがインデックスから除外され、サイト全体の品質シグナルが向上します。クロールバジェットも本当に重要なページに集中できます。 AdSense審査への好影響:低品質ページが減ることで、「価値のあるコンテンツが十分にあるサイト」として評価されやすくなります。 サイトマップの最適化:不要なURLが減り、サイトマップがスッキリします。Google Search Consoleでのインデックス状況も改善されます。 タグの管理は地味な作業ですが、サイトの品質に直結する重要なポイントです。SNSの感覚でタグを付けてしまっていた方は、ぜひ今回のコードを導入して、サイト全体のクオリティを底上げしてみてください。functions.php にコピペするだけで完了する手軽さなので、WordPress初心者の方でも安心して実践できます。
WordPressの「見えにくい品質問題」は他にもあります。たとえば、アイキャッチ画像のキャッシュが原因で古い画像が表示され続ける問題もそのひとつです。





コメント