2026年5月20日
2026年5月20日
WordPressのメタタグを設定する方法
はじめに
メタタグは検索エンジンとブラウザにページの情報を伝えるHTML要素です。WordPressは基本的なメタタグを自動出力しますが、SEOに最適化された robots・canonical・description タグを wp_head フックで制御することで、インデックスの質を高められます。
症状・原因
- Googleに意図しないページがインデックスされている
- 検索結果のタイトルやスニペットが正しくない
- 重複コンテンツとして評価されている
- モバイルでレイアウトが崩れる(viewport未設定)
解決手順
ステップ1:必須メタタグを確認する
// WordPress が自動で出力するメタタグ(wp_head経由):
// <meta charset="UTF-8"> ← wp_head() で自動出力
// <meta name="viewport" ...> ← テーマが出力(必須)
// <link rel="canonical" href="..."> ← WP4.6以降自動出力
// <link rel="pingback" href="..."> ← 自動出力(不要なら削除可)
// 自動出力されないため手動設定が必要:
// <meta name="description" content="...">
// <meta name="robots" content="...">
// OGPタグ(別記事で解説)
// JSON-LD構造化データ(別記事で解説)
ステップ2:viewportとcharsetを正しく設定する
// functions.php
function mytheme_essential_meta_tags(): void {
// charset は wp_head() が自動出力するが念のため確認
// <meta charset="UTF-8"> ← WordPress が自動で出力
// viewport: モバイル対応に必須
echo '<meta name="viewport" content="width=device-width, initial-scale=1">' . "\n";
// X-UA-Compatible: IE互換モードを無効化(IE11以前向け)
// 現在はほぼ不要だが古いサイトでは設定されていることがある
// echo '<meta http-equiv="X-UA-Compatible" content="IE=edge">' . "\n";
}
add_action('wp_head', 'mytheme_essential_meta_tags', 1);
ステップ3:robotsメタタグを適切に設定する
// functions.php
function mytheme_robots_meta(): void {
// デフォルトはインデックス許可(明示的に書かなくてもよい)
$robots = 'index, follow';
// noindex にすべきページ
if (is_search()) {
$robots = 'noindex, follow'; // 検索結果
} elseif (is_404()) {
$robots = 'noindex, nofollow'; // 404ページ
} elseif (is_author() && !is_front_page()) {
$robots = 'noindex, follow'; // 著者アーカイブ(任意)
} elseif (is_tag()) {
$robots = 'noindex, follow'; // タグアーカイブ(任意)
} elseif (is_paged() && get_query_var('paged') > 3) {
$robots = 'noindex, follow'; // 深いページネーション
}
// ステージング環境では全ページnoindex
if (defined('WP_ENV') && WP_ENV === 'staging') {
$robots = 'noindex, nofollow';
}
if ($robots !== 'index, follow') {
echo '<meta name="robots" content="' . esc_attr($robots) . '">' . "\n";
}
}
add_action('wp_head', 'mytheme_robots_meta', 1);
ステップ4:不要なメタタグ・リンクタグを削除する
// functions.php
function mytheme_remove_unnecessary_head_tags(): void {
// RSD リンク(XML-RPCが不要な場合)
remove_action('wp_head', 'rsd_link');
// Windows Live Writer リンク
remove_action('wp_head', 'wlwmanifest_link');
// ショートリンク(SEO的に不要)
remove_action('wp_head', 'wp_shortlink_wp_head');
// WordPress バージョン情報(セキュリティのため削除)
remove_action('wp_head', 'wp_generator');
// Pingbackリンク(使用しない場合)
remove_action('wp_head', 'feed_links_extra', 3);
// フィード自体は残す場合
// remove_action('wp_head', 'feed_links', 2);
// Adjacent posts リンク(SEOには不要)
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10);
// REST API リンク(公開したくない場合)
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('template_redirect', 'rest_output_link_header', 11);
}
add_action('init', 'mytheme_remove_unnecessary_head_tags');
ステップ5:meta robots をHTTPヘッダーでも送信する
// functions.php
// ページのnindex設定をX-Robots-Tagヘッダーでも送信
// (PDFなど非HTMLリソースにも有効)
function mytheme_x_robots_tag_header(): void {
if (headers_sent()) {
return;
}
if (is_search() || is_404()) {
header('X-Robots-Tag: noindex', true);
}
// ステージング環境
if (defined('WP_ENV') && WP_ENV === 'staging') {
header('X-Robots-Tag: noindex, nofollow', true);
}
}
add_action('send_headers', 'mytheme_x_robots_tag_header');
// wp-config.php でステージング環境を識別
// define('WP_ENV', 'staging'); // ステージングサーバーのwp-config.phpに追加
注意事項
wp_generatorを削除するとWordPressのバージョンが隠せますが、セキュリティの根本解決にはなりません。WordPressとプラグインを常に最新に保つことの方が重要ですis_search()での noindex は必ず設定してください。Googleがサイト内検索ページをインデックスすると重複コンテンツとして評価されます- ステージング環境の
noindexはデプロイ手順に組み込み、本番環境に誤って適用されないよう注意してください
まとめ
wp_head priority:1 で robots メタタグを出力し、検索結果・404・タグアーカイブを noindex にします。remove_action で不要なリンクタグを削除してHTMLを軽量化します。X-Robots-Tag HTTPヘッダーをあわせて送信することで、PDFなどHTMLでないリソースにもインデックス制御が効きます。