WordPressで特定の投稿詳細ページをnoindex nofollowにする方法

WordPress
スポンサーリンク



投稿詳細ページへのnoindex nofollow設定は functions.php への記述がベストプラクティス

WordPressサイトのSEO対策において、特定の投稿詳細ページのみを検索エンジンのインデックスから除外したい、またはクロールさせたくないというニーズは多く存在します。

この設定を行うには、直接テーマファイルを編集するよりも、functions.phpにフック(アクション)として記述する方法が、保守性・安全性・モダンな開発の観点から最適解です。

古いテーマではheader.phpに直接記述する方法も使われていましたが、現在のWordPressでは、フックを使って内に動的にメタタグを出力するのが一般的です。

なぜ functions.php に記述するのが望ましいのか?

主な理由はテーマのアップデート耐性とコードの管理のしやすさにあります。

アップデート耐性

テーマのコアファイルを直接編集(例:header.php)してしまうと、テーマがアップデートされた際に変更内容が上書きされて消えてしまうリスクがあります。

子テーマのfunctions.phpに記述すれば、親テーマのアップデートの影響を受けません。

関数の分離

特定の機能(今回はnoindex/nofollowメタタグの出力)を関数として独立させることで、コードの見通しが良くなり、将来的なメンテナンスやデバッグが格段に楽になります。


【具体的な実装方法】wp_headアクションフックを利用する

ここでは、functions.php ファイルに記述する具体的なコードを紹介します。

このコードは、WordPressが提供する標準的なアクションフックである wp_head を利用して、ページが投稿詳細ページ(is_single()がtrueのとき)の場合にのみ、noindex nofollowメタタグを出力します。

functions.php に追記するコード

お使いのテーマの子テーマにある functions.php に、以下のコードを追記してください。


項目 説明
is_single() WordPressの条件分岐タグの一つ。表示しているページが投稿の詳細ページである場合にtrueを返します。
wp_head WordPressがテーマの<head>セクションを処理する際に実行するアクションフック。このフックを使うことで、HTMLの<head>タグ内に要素を追加できます。
noindex, nofollow 検索エンジンに対し「このページをインデックスしないで」「このページのリンクを辿らないで」と伝えるための命令(ディレクティブ)です。

補足:特定の投稿タイプ(Custom Post Type)に対応させたい場合

もし、標準の投稿(post)だけでなく、カスタム投稿タイプの詳細ページにも同じ設定を適用したい場合は、is_single() の引数に投稿タイプのスラッグを渡せば対応可能です。

news というスラッグのカスタム投稿詳細ページにも適用する場合


【まとめ】より安全で管理しやすいコードでSEO対策を実現しよう

Webデザイナーとして、クライアントサイトのSEO対策とサイトの持続可能性(サステナビリティ)の両方を考慮することは極めて重要です。

元の記事のように header.php に直接記述する手法はレガシーになりつつあります。今回紹介した functions.php とフックを使った方法は、WordPressの標準的な開発手法であり、安全かつ管理が容易な最良の手段といえますね、

コメント

タイトルとURLをコピーしました