2026年5月20日
2026年5月20日
WordPressのXMLサイトマップが生成されない場合の解決方法
はじめに
新しい記事を公開したのにサイトマップに追加されない、Yoast SEOのサイトマップが空のXMLになっている、サイトマップのURLが変わってSearch Consoleからエラーが出ている。XMLサイトマップの更新問題はキャッシュや設定の競合が多くの原因です。
症状・原因
XMLサイトマップが生成されない主な原因:
- プラグインのキャッシュ:Yoast SEOのサイトマップキャッシュが更新されていない
- WordPressの標準とYoast SEOの競合:両方が有効でURLが異なる
- 投稿タイプの設定:特定の投稿タイプが
exclude_from_searchで除外されている - メモリ不足:大規模サイトでサイトマップ生成時にメモリ切れ
- パーマリンク設定の破損:サイトマップのURLが解決されない
解決手順
ステップ1:サイトマップのURLを確認する
# 各プラグインのサイトマップURLを確認
curl -I https://yoursite.com/wp-sitemap.xml # WordPress標準
curl -I https://yoursite.com/sitemap_index.xml # Yoast SEO
curl -I https://yoursite.com/sitemap.xml # All in One SEO / Google XML Sitemaps
ステップ2:Yoast SEOのサイトマップキャッシュをクリアする
# WP-CLIでYoast SEOのキャッシュをクリア
wp eval 'WPSEO_Sitemaps_Cache::clear();'
wp option delete wpseo_xml
Yoast SEO管理画面から:
1. Yoast SEO → ツール → ファイルエディター
2. または Yoast SEO → 設定 → サイトマップ → 「XMLサイトマップを有効にする」をオフ→オンに切り替え
ステップ3:WordPress標準サイトマップとの競合を解消する
// functions.php — WordPress標準サイトマップを無効化(Yoast SEO使用時)
add_filter('wp_sitemaps_enabled', '__return_false');
または Yoast SEOを使わない場合は標準サイトマップをカスタマイズ:
// functions.php — 標準サイトマップに投稿タイプを追加・除外
add_filter('wp_sitemaps_post_types', function($post_types) {
// カスタム投稿タイプを追加
$post_types['product'] = get_post_type_object('product');
// 固定ページを除外
unset($post_types['page']);
return $post_types;
});
// 件数制限を設定(大規模サイト対応)
add_filter('wp_sitemaps_max_urls', function() {
return 500; // デフォルト2000を削減
});
ステップ4:サイトマップのインデックスファイルを確認する
// Yoast SEOのサイトマップをデバッグ
add_action('init', function() {
if (isset($_GET['debug_sitemap']) && current_user_can('manage_options')) {
$sitemap = new WPSEO_Sitemaps();
$sitemap->redirect_canonical_sitemaps();
}
});
ステップ5:カスタム投稿タイプをサイトマップに含める
// register_post_type の引数を確認・修正
register_post_type('product', [
'public' => true,
'exclude_from_search' => false, // falseにすることでサイトマップに含まれる
'publicly_queryable' => true,
// ...
]);
ステップ6:大規模サイトのメモリ対策
// wp-config.php
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '512M');
// functions.php — サイトマップ生成時のメモリを増加
add_filter('wpseo_sitemap_exclude_post_type', function($value, $type) {
// 特定の投稿タイプを除外してメモリを節約
if ($type === 'attachment') return true;
return $value;
}, 10, 2);
ステップ7:Search Consoleで再送信する
1. Search Console → サイトマップ
2. 古いサイトマップを削除(「...」メニューから「削除」)
3. 新しいURLを入力して「送信」
4. ステータスが「成功しました」になるまで待つ(数時間〜数日)
注意事項
- サイトマップには公開済み・インデックス可能な投稿のみが含まれます。noindexページは自動的に除外されます。
- Search Consoleでの反映には時間がかかります。送信後すぐにクロールされるわけではありません。
まとめ
XMLサイトマップが生成されない場合はYoast SEOのキャッシュクリアとWordPress標準との競合解消が最初のステップです。カスタム投稿タイプが含まれない場合はexclude_from_searchの設定を確認してください。関連記事:サイトマップが壊れている場合、robots.txtの設定方法