2026年5月20日

2026年5月20日

WordPressのBing Webmaster Toolsを設定する方法

はじめに

BingはGoogleに次ぐ第2位の検索エンジンで、Microsoft Edge・Cortana・ChatGPTの検索機能にも利用されています。Bing Webmaster Toolsに登録してサイトマップを送信し、IndexNowでページ更新を即座に通知することで、Bing検索でのインデックスと表示を改善できます。

症状・原因

  • BingでサイトがインデックスされていないURLがある
  • Bing検索でサイトが表示されない
  • Googleには登録しているがBingには未登録
  • IndexNowを使ってBingへのインデックス通知を自動化したい

解決手順

ステップ1:Bing Webmaster Toolsにサイトを登録する

【登録手順】
1. https://www.bing.com/webmasters にアクセス
2. Microsoftアカウントでサインイン
3. 「サイトを追加」→ サイトURLを入力
4. 認証方法を選択:
   a) XMLファイル配置(推奨)
   b) メタタグ
   c) CNAMEレコード

【メタタグ認証(functions.phpで実装)】
// functions.php: Bing Webmaster ツールの認証メタタグを追加

add_action('wp_head', function(): void {
    if (!is_front_page()) return;

    // Bing Webmaster Tools のサイト認証コード
    $bing_verification = get_option('bing_site_verification', '');

    if ($bing_verification) {
        echo '<meta name="msvalidate.01" content="'
             . esc_attr($bing_verification) . '">' . PHP_EOL;
    }
}, 1);

// 管理画面に設定フィールドを追加
add_action('admin_init', function(): void {
    register_setting('general', 'bing_site_verification');

    add_settings_field(
        'bing_site_verification',
        'Bing認証コード(msvalidate.01)',
        function(): void {
            $val = get_option('bing_site_verification', '');
            echo '<input type="text" name="bing_site_verification"'
                 . ' value="' . esc_attr($val) . '" class="regular-text">'
                 . '<p class="description">Bing Webmaster Tools の認証コードを入力</p>';
        },
        'general'
    );
});

ステップ2:サイトマップをBingに送信する

# Bing へのサイトマップ送信
# Bing Webmaster Tools → サイトマップ → サイトマップを送信

# または Bing Ping URL(手動)
curl "https://www.bing.com/ping?sitemap=https://example.com/wp-sitemap.xml"

# WP-CLI で送信状況を確認
wp eval "
\$sitemap = home_url('/wp-sitemap.xml');
\$ping    = 'https://www.bing.com/ping?sitemap=' . rawurlencode(\$sitemap);
\$res     = wp_remote_get(\$ping, ['timeout' => 15]);
echo 'Status: ' . wp_remote_retrieve_response_code(\$res) . PHP_EOL;
echo \$ping . PHP_EOL;
"
// functions.php: 投稿公開時に Bing へ自動ピング

add_action('publish_post', function(int $post_id): void {
    // 下書きからの公開のみ(更新は除く)
    if (get_post_status($post_id) !== 'publish') return;

    $sitemap_url = home_url('/wp-sitemap.xml');
    $ping_url    = 'https://www.bing.com/ping?sitemap=' . rawurlencode($sitemap_url);

    wp_remote_get($ping_url, [
        'timeout'   => 10,
        'blocking'  => false,  // 非同期(レスポンスを待たない)
    ]);
});

ステップ3:IndexNowでページ更新をBingに即時通知する

// functions.php: IndexNow API でページ更新を即時通知

// 1. IndexNow APIキーを生成(ランダム文字列)
// 2. /your-api-key.txt をサイトルートに配置
// 3. ページ更新時にAPIを呼び出す

function indexnow_submit(string $url): bool {
    $api_key = get_option('indexnow_api_key', '');
    if (!$api_key) return false;

    $response = wp_remote_post('https://api.indexnow.org/IndexNow', [
        'headers'     => ['Content-Type' => 'application/json; charset=utf-8'],
        'body'        => wp_json_encode([
            'host'    => parse_url(home_url(), PHP_URL_HOST),
            'key'     => $api_key,
            'keyLocation' => home_url('/' . $api_key . '.txt'),
            'urlList' => [$url],
        ]),
        'timeout'     => 15,
        'blocking'    => true,
    ]);

    $code = wp_remote_retrieve_response_code($response);
    return $code === 200 || $code === 202;
}

// 投稿の公開・更新時に IndexNow 通知
add_action('save_post', function(int $post_id, WP_Post $post): void {
    if (wp_is_post_revision($post_id)) return;
    if ($post->post_status !== 'publish') return;
    if (!in_array($post->post_type, ['post', 'page'], true)) return;

    $url = get_permalink($post_id);
    if ($url) {
        indexnow_submit($url);
    }
}, 10, 2);

// IndexNow キーファイルを動的に配信
add_action('init', function(): void {
    $api_key = get_option('indexnow_api_key', '');
    if (!$api_key) return;

    add_rewrite_rule(
        '^' . preg_quote($api_key, '/') . '\.txt$',
        'index.php?indexnow_key=1',
        'top'
    );
});

add_filter('query_vars', function(array $vars): array {
    $vars[] = 'indexnow_key';
    return $vars;
});

add_action('template_redirect', function(): void {
    if (!get_query_var('indexnow_key')) return;

    $api_key = get_option('indexnow_api_key', '');
    header('Content-Type: text/plain');
    echo esc_html($api_key);
    exit;
});

ステップ4:Bing Webmaster Toolsのレポートを活用する

【Bing Webmaster Tools の主要レポート】

① 検索パフォーマンス
→ クリック数・表示回数・CTR・平均順位
→ Google Search Console と比較して差異を分析

② インデックス
→ インデックス済みページ数
→ インデックスエラー・クロールエラーを確認

③ サイトスキャン(SEO診断)
→ Bingが検出したSEO問題を自動スキャン
→ titleタグ・metaディスクリプション・画像altなどを診断

④ バックリンク
→ Bingが認識している被リンクを確認
→ Googleと異なる被リンクデータが得られる場合あり

⑤ キーワード調査ツール
→ Bing固有のキーワードデータ
→ 無料で利用できるキーワードアイデアツール

ステップ5:Yoast SEO でBing連携を設定する

// Yoast SEO を使用している場合:
// Yoast SEO → 全般 → ウェブマスターツール
// → Bing認証コードを入力するフィールドがある

// Yoast SEO + IndexNow の自動連携:
// Yoast SEO 18.0以降で IndexNow が組み込み対応
// Yoast SEO → SEO → 検索エンジン最適化 → IndexNow
// → IndexNow: 有効 に設定するだけで自動送信される

// Yoast SEO なしで認証コードを確認
add_action('wp_head', function(): void {
    if (!is_front_page()) return;

    // Yoast SEO が出力する場合は重複に注意
    if (!defined('WPSEO_VERSION')) {
        $code = get_option('bing_site_verification', '');
        if ($code) {
            echo '<meta name="msvalidate.01" content="' . esc_attr($code) . '">' . PHP_EOL;
        }
    }
}, 1);

注意事項

  • IndexNow APIキーファイル(your-key.txt)はサイトのルートディレクトリに配置するか、上記のようにWordPressのrewrite ruleで動的に配信してください
  • IndexNowは1回のAPIコールで最大10,000URLを送信できますが、更新したページのみを送信することがガイドラインで推奨されています
  • Bing Webmaster ToolsのサイトをGoogleサーチコンソールからインポートする機能があり、すでにGoogleに登録済みの場合は簡単に移行できます

まとめ

Bing Webmaster Toolsへの登録はmsvalidate.01メタタグをwp_headで出力して認証します。サイトマップはwp-sitemap.xmlをBingに送信し、投稿公開時に自動ピングするよう設定します。IndexNow APIキーを生成してページ更新時に即時通知することでBingへのインデックス速度を向上させます。Yoast SEO 18.0以降はIndexNowの組み込みサポートがあり設定画面から有効化するだけで利用できます。

お気軽にご相談ください

お見積りへ お問い合わせへ