はじめに

WordPressサイトのSEO対策は、ページの種類ごとに最適な設計を行うことが成功の鍵です。
投稿個別ページ(single.php)、固定ページ(page.php)、トップページ(front-page.php)、投稿一覧ページ(home.php)では、それぞれSEO上の役割や注意点が異なります。

この記事では、各ページタイプに対する具体的なSEO設計のポイントをわかりやすく解説し、
すぐに活用できる実装例コードも併せてご紹介します。


1. 投稿シングルページ(single.php)のSEO設計

1-1. canonicalタグは投稿URL自身を指定

投稿ページはメインコンテンツのため、canonicalタグは必ずその投稿の正規URLを指定しましょう。
これにより、重複URLによる評価の分散を防ぎ、SEO効果を最大化できます。

<link rel="canonical" href="https://example.com/2025/07/14/sample-post/">

1-2. noindexは基本不要、例外あり

投稿ページはSEO上重要なため、通常はnoindexは付けません。
ただし、非公開投稿やパスワード保護投稿、重複の疑いがある投稿、また分割投稿の2ページ目以降はnoindex指定が適切です。

1-3. ページネーション(分割投稿)への対応

<!--nextpage-->タグで投稿を分割している場合、

  • 1ページ目はcanonicalを投稿URL自身に設定し、index推奨
  • 2ページ目以降はnoindexの指定を検討

しましょう。

1-4. OGP・TwitterカードなどSNSメタタグ連動

投稿タイトル、説明文、アイキャッチ画像を動的に出力し、SNS上での拡散を促進します。

1-5. 構造化データ(JSON-LD)でリッチ化を狙う

記事情報をJSON-LD形式で埋め込み、検索結果でのリッチ表示を目指しましょう。


実装例:投稿シングルページ用SEO最適化コード

add_action('wp_head', 'custom_seo_tags_single_post', 1);
function custom_seo_tags_single_post() {
if (is_singular('post')) {
global $post;

// 非公開・パスワード保護投稿は noindex 指定
if (post_password_required($post) || $post->post_status !== 'publish') {
echo '<meta name="robots" content="noindex,follow">' . "\n";
return;
}

// canonicalタグ出力(投稿URL自身)
$canonical_url = get_permalink($post);
echo '<link rel="canonical" href="' . esc_url($canonical_url) . '">' . "\n";

// ※ ページ分割対応やOGP・構造化データは必要に応じて追加実装可能
}
}

2. 固定ページ(page.php)のSEO設計

2-1. canonicalタグは固定ページ自身のURLを指定

固定ページも投稿ページ同様に、canonicalタグは自身のURLを正しく指定します。

2-2. noindexは基本不要、例外あり

お問い合わせフォームやプライバシーポリシーページ、下書き・非公開ページなどはnoindex指定を推奨します。

2-3. ページネーションはほとんど使われない

固定ページでのページ分割は稀ですが、分割がある場合は適切に対応しましょう。

2-4. SNSメタタグ動的出力

タイトルや説明文、画像をページ内容に応じて動的に出力し、SNSでのシェア時に効果的に表示されるようにします。

2-5. 構造化データ対応

会社概要やサービス紹介ページなどで構造化データを設定し、検索結果のリッチ表示を目指します。


実装例:固定ページ用SEO最適化コード

add_action('wp_head', 'custom_seo_tags_fixed_page', 1);
function custom_seo_tags_fixed_page() {
if (is_page()) {
global $post;

// 非公開・下書きページは noindex 指定
if ($post->post_status !== 'publish') {
echo '<meta name="robots" content="noindex,follow">' . "\n";
return;
}

// noindex設定例:特定のスラッグに対して
$noindex_slugs = ['privacy-policy', 'contact'];
if (in_array($post->post_name, $noindex_slugs, true)) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
return;
}

// canonicalタグ出力(固定ページURL自身)
$canonical_url = get_permalink($post);
echo '<link rel="canonical" href="' . esc_url($canonical_url) . '">' . "\n";
}
}

3. トップページ(front-page.php)のSEO設計

3-1. canonicalタグは正規URLに固定

トップページは必ず末尾スラッシュ付きの正規URLを指定しましょう。
例: https://example.com/

3-2. noindexは絶対に付けない

トップページはSEO上最重要ページのため、noindexは付けないようにしてください。

3-3. ページネーションは通常なし

トップページは通常ページ分割がなく、単一ページとして扱います。


実装例:トップページ用SEO最適化コード

add_action('wp_head', 'custom_seo_tags_for_front_page', 1);
function custom_seo_tags_for_front_page() {
if (is_front_page()) {
$canonical_url = trailingslashit(home_url('/'));
echo '<link rel="canonical" href="' . esc_url($canonical_url) . '">' . "\n";

// noindexは出力しない
}
}

4. 投稿一覧ページ(home.php)のSEO設計

4-1. canonicalタグはページ送りに対応

投稿一覧は複数ページに分かれるため、ページ番号に応じてcanonicalタグを正しく設定します。

  • 1ページ目: /blog/
  • 2ページ目以降: /blog/page/2/ など

4-2. noindexは薄い最終ページに条件付きで

最終ページの投稿数が極端に少ない場合はnoindexを付けて、検索評価の低下を防ぐことがあります。

4-3. 注意点

投稿一覧ページが固定ページに設定されている場合は、get_option('page_for_posts')で正しいURLを取得してください。


実装例:投稿一覧ページ用SEO最適化コード

add_action('wp_head', 'custom_seo_tags_for_home_page', 1);
function custom_seo_tags_for_home_page() {
if (is_home() && !is_front_page()) {
global $wp_query;

$page_for_posts = get_option('page_for_posts');
$base_url = ($page_for_posts) ? get_permalink($page_for_posts) : home_url('/');

if (is_paged()) {
$paged = max(1, get_query_var('paged'));
$canonical_url = trailingslashit($base_url) . 'page/' . $paged . '/';
} else {
$canonical_url = $base_url;
}

echo '<link rel="canonical" href="' . esc_url($canonical_url) . '">' . "\n";

// noindexを最終ページの薄いコンテンツで条件付き出力
if (is_paged()) {
$total_posts = $wp_query->found_posts;
$posts_per_page = get_query_var('posts_per_page');
$current_page = max(1, get_query_var('paged'));
$total_pages = $wp_query->max_num_pages;

if ($current_page < $total_pages) {
$posts_on_this_page = $posts_per_page;
} elseif ($current_page === $total_pages) {
$posts_on_this_page = $total_posts - $posts_per_page * ($total_pages - 1);
} else {
$posts_on_this_page = 0;
}

if ($posts_on_this_page <= 1) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
}
}
}

5. まとめ

ページタイプcanonicalタグnoindexの基本方針ページネーション対応SNSメタタグ構造化データ
投稿シングルページ投稿URL自身基本不要、例外あり1ページ目index、2ページ目以降は検討動的に出力必要に応じて実装
固定ページ固定ページURL自身例外的にプライバシー等で設定ほぼなし動的に出力必要に応じて実装
トップページ正規URLに固定付けない(絶対にnoindex禁止)なし追加実装可能追加実装可能
投稿一覧ページページ送りに対応薄い最終ページは条件付きnoindexページネーション必須追加実装可能追加実装可能

SEOはサイト全体の質と評価を守るために、ページタイプごとに細やかな設計が欠かせません。
この記事の実装例を参考に、自社サイトにも取り入れたい設計があれば、お問い合わせからご相談ください。

また、OGPやTwitterカード、構造化データの自動出力コード例など、さらに踏み込んだ実装サポートをご希望の場合も、お気軽にご連絡ください。い。