はじめに
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カード、構造化データの自動出力コード例など、さらに踏み込んだ実装サポートをご希望の場合も、お気軽にご連絡ください。い。