XMLサイトマップの正しい作り方|Googleに確実にインデックスさせる設定

WordPressでSEO対策を行う上で、XMLサイトマップは欠かせません。

通常は wp-sitemap.xml(WordPress標準サイトマップ)を使うのが推奨ですが、中には「標準の仕様では足りない」「独自の投稿タイプだけを対象にしたい」という場合もあります。

そこで、この記事では、functions.php に数行追加するだけでXMLサイトマップを自動生成する方法を解説します。
サイト構造を検索エンジンに正確に伝えることで、インデックスの精度と速度が向上します。

1 functions.phpにコードを追加


//-------------------------------------------
// XMLサイトマップを自動生成
//-------------------------------------------
function my_custom_xml_sitemap() {
    if (strpos($_SERVER['REQUEST_URI'], '/xml-sitemap-auto.xml') !== false) {
        header('Content-Type: application/xml; charset=UTF-8');
        header('Cache-Control: max-age=600, public'); // 10分キャッシュ
        echo '<?xml version="1.0" encoding="UTF-8"?>';
        echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

        // 投稿を取得
        $args = array(
            'post_type'      => array('post', 'page', 'news', 'product'), // 必要な投稿タイプを指定
            'post_status'    => 'publish',
            'posts_per_page' => -1
        );
        $posts = get_posts($args);

        foreach ($posts as $post) {
            $url = get_permalink($post->ID);
            $lastmod = get_the_modified_date('c', $post);
            echo '<url>';
            echo '<loc>' . esc_url($url) . '</loc>';
            echo '<lastmod>' . esc_html($lastmod) . '</lastmod>';
            echo '<changefreq>weekly</changefreq>';
            echo '<priority>0.8</priority>';
            echo '</url>';
        }

        echo '</urlset>';
        exit;
    }
}
add_action('init', 'my_custom_xml_sitemap');

2 確認方法

上記コードを functions.php に追加した後、
ブラウザで https://あなたのドメイン/xml-sitemap-auto.xml を開いてください。
XML形式でサイトマップが表示されれば成功です。

3 ポイント

Google は 2023年5月に ping API を完全廃止、Bing も 2023年後半に ping API を廃止しました。
この独自サイトマップは Search Console に送らないでください。 Search Console に送るのは wp-sitemap.xml だけです。

補足2:すべての公開投稿タイプを対象にする

$args = array(
    'post_type'      => get_post_types(array('public' => true)), // 公開中の投稿タイプをすべて対象
    'post_status'    => 'publish',
    'posts_per_page' => -1
);
$posts = get_posts($args);
補足3:除外したい投稿タイプを指定する

$post_types = get_post_types(array('public' => true));
unset($post_types['attachment']); // 添付ファイルを除外

$args = array(
    'post_type'      => $post_types,
    'post_status'    => 'publish',
    'posts_per_page' => -1
);
$posts = get_posts($args);

将来的にカスタム投稿タイプを増やす予定があるなら、
「完全自動型+除外型」 の組み合わせがおすすめです。

4 完成イメージ

XMLサイトマップ

5 代用プラグイン

  • Google XML Sitemaps:サイトマップ自動生成と検索エンジン通知対応
  • Yoast SEO:SEO最適化+サイトマップ生成機能付き
  • All in One SEO Pack:サイトマップ作成・送信が簡単

6 まとめ

  • プラグイン不要でfunctions.phpに追加するだけ
  • /xml-sitemap-auto.xml にアクセスすれば自動生成される
  • この独自サイトマップは Search Console に送らないでください。 Search Console に送るのは wp-sitemap.xml だけです。
  • 独自サイトマップはアクセスされた時点で常に最新状態になります。

サイトを軽量化しながらSEOを強化したい方に最適です。
一度設定すれば、今後の投稿・更新も自動反映されます。