この回では、「最低限ここだけ押さえておきたい SEO 挙動のカスタマイズ」をまとめます。
- 検索結果ページ(
/ ?s=...)と 404 ページを noindex にする - 添付ファイルページ(画像単体のページ)を親投稿へ 301 リダイレクトする
- WordPress の自動 canonical リダイレクトを無効化する
いずれも functions.php に数行書くだけで制御できますが、
SEO面での意味とリスクを理解してから使うことが重要です。
前提:どこに書くコードなのか
いつもの通り、
- 子テーマの
functions.phpに書く想定です。 - パス例:
wp-content/themes/your-child-theme/functions.php
親テーマ直書きだと、アップデートで消えてしまうので避けるほうが安全です。
1. 検索結果ページと 404 ページを noindex にする
なぜやるのか
- サイト内検索結果(
/?s=キーワード) - 404 ページ(存在しないURL)
これらをインデックスさせても、ユーザーにとって有益なページとは言い難いことが多いです。
最低限の対策として、検索結果と 404 は noindex にしておくのがよくある運用です。
コード(functions.php)
// 検索結果ページと404ページを noindex
add_action( 'wp_head', function () {
if ( is_search() || is_404() ) {
echo '<meta name="robots" content="noindex,follow" />' . \PHP_EOL;
}
} );
解説
is_search()…… 検索結果ページかどうかis_404()…… 404 ページかどうかnoindex,follow…… ページ自体はインデックスしないが、ページ内リンクは辿る
注意点
- 既に SEOプラグイン(All in One SEO / Yoast / RankMath など)を使っている場合、
そちら側で search / 404 の noindex 設定があることが多いです。
→ 二重管理を避けるため、どちらで管理するかを決めて片方を無効にした方がよいです。
2. 添付ファイルページを親投稿へ 301 リダイレクトする
添付ファイルページとは?
WordPress は、画像をアップロードすると、
- メディアライブラリ内のデータ
- 画像単体用のURL(添付ファイルページ)
の2つを自動的に用意します。
たとえば、こんなURLです:
https://example.com/sample-image/
このページは 画像しか表示されない薄いコンテンツ になりがちで、
インデックスされると SEO 的にもユーザビリティ的にも微妙です。
そこで、
添付ファイルページにアクセスされたら、その画像を貼っている「親投稿」にリダイレクトする
という挙動に変えます。
コード(functions.php)
// 添付ファイルページを親投稿へ301リダイレクト
add_action( 'template_redirect', function () {
if ( is_attachment() ) {
$parent_id = wp_get_post_parent_id( get_the_ID() );
if ( $parent_id ) {
wp_redirect( get_permalink( $parent_id ), 301 );
exit;
} else {
wp_redirect( home_url( '/' ), 301 );
exit;
}
}
} );
解説
is_attachment()…… 添付ファイルページかどうかwp_get_post_parent_id()…… その画像を紐づけている投稿の ID- 親投稿があれば:親投稿へ 301 リダイレクト
- 親投稿が無い場合:トップページへ 301 リダイレクト
SEO 的な意味
- 薄い画像単体ページがインデックスされるのを防げる
- 画像を使っている「本来見せたい記事」に評価を集約しやすくなる
画像検索から来るユーザーも、
親記事に飛ばしたほうが文脈が伝わるケースが多いため、実務でもよく使われる設定です。
3. canonical リダイレクトを無効化する
そもそも WordPress の canonical リダイレクトとは?
WordPress には、URLが微妙に違うアクセスを正規のURLに自動でリダイレクトする機能があります。
例:
https://example.com/post-name/(正)https://example.com/index.php?p=123https://example.com/post-name(末尾スラッシュ無し)
などを、内部で判定して正規URLへ飛ばそうとします。
これが redirect_canonical です。
通常は便利ですが、
- かなり変則的なURL設計をしている
- リバースプロキシや多言語サイトなどで、WordPressの「お節介リダイレクト」が邪魔
- 特定のURL構造で無限リダイレクトが発生する
といった問題にぶつかることがあります。
コード(functions.php)
// canonical リダイレクト(redirect_canonical)を無効化
add_filter( 'redirect_canonical', function ( $redirect_url ) {
return false;
} );
効果
- WordPress が自動で行っていた canonical リダイレクトをすべて停止します。
- URLが変な形でアクセスされても、基本的にそのまま表示されます。
強い注意点
- 通常のサイトでは、あえて切る必要はありません。
- 無効化すると、同一コンテンツが複数URLで表示される可能性が増えます
→ 重複コンテンツとしてSEOに悪影響を与えるリスクがあります。 - どうしても canonical リダイレクトが邪魔になる特殊なケース(カスタムリバースプロキシ、多言語構成など)でのみ検討するのが安全です。
4. まとめ:この3つをどう使い分けるか
| カスタマイズ | おすすめ度 | 典型的な用途 |
|---|---|---|
| 検索・404 を noindex | 高 | ほぼ全サイトにおすすめ(ただしSEOプラグインと二重管理しない) |
| 添付ファイル → 親投稿 301 | 高 | メディア多めのブログ・コーポレートサイト全般 |
| canonicalリダイレクト無効 | 低(慎重に) | URLが特殊で WP の自動リダイレクトと衝突している場合のみ |
ポイントは「意味を理解したうえでオンにする」ことです。
- 設定そのものは数行で済む
- しかし SEO とアクセスの挙動が変わる
という性質のものなので、
- ステージング環境(テスト環境)があるなら、そちらで試す
- Search Console でインデックス状況を見ながら調整する
- SEO プラグインとの役割分担を意識する
くらいまでやっておくと、実務でもトラブルを減らせます。
このシリーズの次の候補としては、
- SVG許可やアップロード拡張子制御、不要な画像サイズ生成ストップ(メディア・アップロード編)
?author=1対策、XML-RPC無効化、ログイン画面カスタマイズなど(セキュリティ編)
といったテーマをまとめると、Qiita 上で「functions.php 基本レシピ集」としてかなり使い回しやすい形になると思います。
