2026年8月28日
2026年8月28日
WordPressのXMLサイトマップに画像情報を含めて画像検索に見つけてもらう方法
WordPress 本体が出力する XML サイトマップ(wp-sitemap.xml)には画像の情報が含まれません。画像の URL をまとめて Google に知らせたい場合は、画像サイトマップに対応した SEO プラグインを使うか、自前で画像サイトマップを出力します。この記事では、Google の画像サイトマップの仕様、プラグインでの設定、プラグインを使わない場合のコード例、そして画像検索で見つけてもらうためにサイトマップ以外で整えておくことを説明します。
画像サイトマップは、画像を Google に見つけてもらう手助けをするものです。サイトマップに載せたからといって画像検索で上位に表示されるわけではない点を、最初に確認しておきます。
Google の画像サイトマップの仕様
画像サイトマップは、通常の XML サイトマップの各 <url> の中に、そのページで使われている画像を書き足す形式です。名前空間 http://www.google.com/schemas/sitemap-image/1.1 を宣言し、次のように書きます。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/sample-post/</loc>
<image:image>
<image:loc>https://example.com/wp-content/uploads/2026/10/photo.jpg</image:loc>
</image:image>
</url>
</urlset>
Google 検索セントラルの説明に基づき、押さえておきたい点をまとめます(2026年10月現在)。
- 使えるタグは
<image:image>と<image:loc>だけです。以前あったimage:caption、image:title、image:geo_location、image:licenseは2022年に廃止されました。古い解説記事やプラグインの出力に残っていても、Google は使いません。 - 1つの
<url>に載せられる画像は最大1,000枚です。 <loc>には画像を使っている「ページ」の URL を、<image:loc>には画像ファイルそのものの URL を書きます。- 画像は CDN など別のドメインに置かれていても記載できます。
- サイトマップ1ファイルの上限(50,000 URL または 50MB)を超える場合は分割し、サイトマップインデックスでまとめます。
Google はページをクロールしたときに <img> 要素から画像を見つけるので、画像サイトマップは必須ではありません。JavaScript で後から読み込まれる画像など、通常のクロールで見つかりにくい画像があるサイトで特に役立ちます。
方法1:SEO プラグインで画像を含める
既に SEO プラグインを使っているなら、まずその機能で対応するのが手軽で安全です。
- Yoast SEO:Yoast のサイトマップは、投稿や固定ページに含まれる画像を各 URL の画像情報として出力します。サイトマップを開くと、URL ごとに画像の枚数が表示されるので、そこで確認できます。
- Rank Math:サイトマップ設定の全般的な項目に、画像をサイトマップに含めるかどうかの切り替えがあります。
- All in One SEO:版によって画像サイトマップの扱いが異なるので、使っている版のサイトマップ設定とドキュメントを確認してください。
設定の名前や置き場所は版によって変わるため、上の説明は目的ベースのものとして読んでください。設定を有効にしたら、ブラウザでサイトマップを開き、ソースを表示して <image:loc> が出力されているかを確かめます。
SEO プラグインのサイトマップを使う場合、WordPress 本体の wp-sitemap.xml は多くのプラグインが自動で無効にします。2種類のサイトマップが並んで出ていないかも確認してください。
方法2:プラグインを使わずに画像サイトマップを出力する
SEO プラグインを入れたくない、または本体のサイトマップを使い続けたい場合は、画像専用のサイトマップを別に用意できます。本体のサイトマップ出力(WP_Sitemaps)は loc・lastmod・changefreq・priority 以外の項目を出力しない作りなので、画像タグを足すには別のファイルにするのが素直です。
次のコードを wp-content/mu-plugins/image-sitemap.php として保存すると、/image-sitemap.xml に投稿の画像サイトマップが出力されます。作業前にバックアップを取り、まずステージング環境で試してください。
<?php
/**
* Plugin Name: Simple Image Sitemap
* Description: /image-sitemap.xml に投稿の画像サイトマップを出力する
*/
add_action( 'init', function () {
add_rewrite_rule( '^image-sitemap\.xml$', 'index.php?my_image_sitemap=1', 'top' );
} );
add_filter( 'query_vars', function ( $vars ) {
$vars[] = 'my_image_sitemap';
return $vars;
} );
// 正規化リダイレクトより先に処理するため優先度 1
add_action( 'template_redirect', function () {
if ( ! get_query_var( 'my_image_sitemap' ) ) {
return;
}
$posts = get_posts( array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1000,
'no_found_rows' => true,
) );
header( 'Content-Type: application/xml; charset=UTF-8' );
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">' . "\n";
foreach ( $posts as $post ) {
$permalink = get_permalink( $post );
$images = array();
// アイキャッチ画像
$thumb_id = get_post_thumbnail_id( $post );
if ( $thumb_id ) {
$images[] = wp_get_attachment_image_url( $thumb_id, 'full' );
}
// 本文中の img 要素(WP 6.2 以降の HTML API を使用)
$processor = new WP_HTML_Tag_Processor( $post->post_content );
while ( $processor->next_tag( 'img' ) ) {
$src = $processor->get_attribute( 'src' );
if ( is_string( $src ) && '' !== $src ) {
$images[] = WP_Http::make_absolute_url( $src, $permalink );
}
}
$images = array_filter( array_map( 'esc_url_raw', array_filter( $images ) ) );
$images = array_slice( array_unique( $images ), 0, 1000 );
if ( ! $images ) {
continue;
}
echo "<url>\n<loc>" . esc_xml( esc_url_raw( $permalink ) ) . "</loc>\n";
foreach ( $images as $src ) {
echo '<image:image><image:loc>' . esc_xml( $src ) . "</image:loc></image:image>\n";
}
echo "</url>\n";
}
echo '</urlset>';
exit;
}, 1 );
コードについての補足です。
- 書き換えルールを追加したあとは、「設定」→「パーマリンク」を開いて「変更を保存」を押し、ルールを反映させます。これを忘れると 404 になります。
- 本文の
<img>とアイキャッチ画像だけを対象にしています。ショートコードで後から生成されるギャラリーや、再利用ブロック(パターン)内の画像は拾いません。必要なら、apply_filters( 'the_content', ... )を通した HTML を解析する方法もありますが、処理が重くなります。 - 投稿数が1,000件を超えるサイトでは、ページ番号で分割して複数ファイルにし、サイトマップインデックスにまとめてください。
- ページキャッシュを使っている場合は、記事の公開後にこの URL のキャッシュも更新されるか確認します。
サイトマップを Google に伝える
作ったサイトマップは、Search Console の「サイトマップ」レポートで URL を送信します。あわせて robots.txt に記載しておくと、他の検索エンジンにも伝わります。WordPress が仮想的に出力する robots.txt を使っている場合は、robots_txt フィルターで行を足せます(サーバーに robots.txt ファイルを置いている場合はそのファイルを直接編集します)。
add_filter( 'robots_txt', function ( $output, $public ) {
if ( $public ) {
$output .= 'Sitemap: ' . esc_url_raw( home_url( '/image-sitemap.xml' ) ) . "\n";
}
return $output;
}, 10, 2 );
送信後、サイトマップレポートで状態が「成功しました」になっているか、検出された URL 数が想定どおりかを確認します。レポートの表記は変わることがあるので、エラーや警告が出ていないかを見るのが要点です。
画像検索で見つけてもらうためにサイトマップ以外で整えること
サイトマップは「画像の存在を知らせる」だけです。画像検索で内容を理解してもらうには、ページ側の作りが大きく関わります。
- 代替テキスト(alt):画像の内容を具体的に説明する文を入れます。キーワードを並べるだけの alt は避けます。WordPress ではメディアライブラリや画像ブロックの設定から入力できます。
- 画像の近くの文章と見出し:Google は画像の周りのテキストも手がかりにします。画像だけを並べるのではなく、説明の段落の近くに置きます。
- ファイル名:
IMG_0123.jpgより、内容が分かる短い英数字のファイル名のほうが手がかりになります。アップロード前に付けておきます。 - **
<img>要素で表示する**:CSS の背景画像は画像検索の対象になりにくいので、見せたい画像は<img>で出します。WordPress 標準のloading="lazy"は問題ありませんが、独自の遅延読み込みスクリプトでsrcを空にしている場合は、Google から画像が見えているか URL 検査で確かめます。 - robots.txt でブロックしない:
/wp-content/uploads/へのクロールを禁止していると、画像はインデックスされません。 - 添付ファイルページを載せない:WordPress 6.4 以降の新規インストールでは添付ファイルページが既定で無効になっています。古いサイトで有効なままの場合、中身の薄い添付ファイルページがサイトマップに入らないよう設定を見直します。
<image:loc>に書くのは画像ファイルの URL です。
まとめ
- WordPress 本体のサイトマップには画像が入らないので、SEO プラグインの機能か自前の画像サイトマップで対応する
- Google が使う画像サイトマップのタグは
image:imageとimage:locだけで、caption などは2022年に廃止済み - 自前で出力する場合は mu-plugin にまとめ、パーマリンク設定の保存とステージングでの確認を忘れない
- Search Console で送信し、検出数とエラーの有無を確かめる
- 画像検索で理解してもらうには、alt・周辺テキスト・ファイル名・
<img>での表示といったページ側の整備が欠かせない