Google XML SitemapsプラグインのPing送信のバグ? のおまけ Ping送信って何?

Ping
©いらすとや.

この記事は前回のおまけです。

Google XML Sitemapsプラグインは、WordPressのサイトマップを作成するだけでなく、更新した際にGoogleに通知する機能も持っています。この通知機能はPing送信機能と呼ばれます。しかし、このPing送信はあまり効果がないため、WordPressの標準のサイトマップ表示機能や他のサイトマップ出力プラグインにはあまり採用されていません。Ping送信が効果がないことは、前回の記事で説明しました。
このページでは改めてPing送信について説明します。

XMLサイトマップのPing送信とは

XMLサイトマップとは、検索エンジンに自分のWebサイトの中身を教えるためのファイルです。検索エンジンはこのファイルを見て、Webサイトにあるページを認識してクロールします。これは、検索エンジンのクローラー(ボット)がWebサイトをクロールしてサイト内の他のページの存在を認識するより効率的です。

XMLサイトマップのPing送信機能とは、Webサイトに新しいページを作ったり変えたりしたときに、検索エンジンに知らせるための機能です。これは、XMLサイトマップの更新を早く伝えることができます。例えば、「新製品の発表」というページを公開したら、Ping送信機能で「新しいページがありますよ」(XMLサイトマップが更新されました)と検索エンジンに伝えます。すると、検索エンジンは「そうなんだ」と思って、XMLサイトマップを読み取りに来て新しいページの存在を認識してくれます。なお、新しいページの存在を認識することと新しいページをクロールしてコンテンツの中身を認識することは全く別です。

Ping送信はその受け手である検索エンジン側の対応が必要です。GoogleはサイトマップのURLをPing送信する方式に対応しています。現在はBingやYandexはサイトマップURLのPing送信対応を停止してIndexNowという方式のPing送信に対応しています。このページはGoogleが対応するサイトマップURLのPing送信についてです。

Google XML SitemapsプラグインのPing送信は何をするか

WordPressのXMLサイトマップ出力用プラグインにはXMLサイトマップのPing送信機能を持っているものがあります。WordPressのXMLサイトマップ出力用プラグインの中でも最も利用者が多いGoogle XML SitemapsプラグインにはPing送信機能があります。

このXMLサイトマップのPing機能はどのように動作するのか見てみましょう。

Google XML SitemapsプラグインでのPing送信はどのようなことをしているでしょうか。
2022年8月19日時点で最新版のバージョン 4.1.5 ではBingへの通知は無くなってGoogleにのみPing送信を行うようになっています。
WordPressの在り処/wp-content/plugins/google-sitemap-generator/sitemap-core.phpの2300行周辺にGoogleへのPing送信の処理が書かれています。

コードの提示は省略しますが、Ping送信でやってることは
http://www.google.com/webmasters/sitemaps/ping?sitemap=https://ウェブサイトのドメイン/sitemap.xml にアクセスしているだけです。
黄字の色https://ウェブサイトのドメイン/sitemap.xmlの部分は、自身のウェブサイトのサイトマップのURLに読み替えてください。

XMLサイトマップのPing送信を手動で実行する

スクリプトでの自動処理ではなくターミナル(コマンドライン)でこのURLにアクセスするとどのような応答があるのか試してみましょう。(ブラウザでも確認できます。ブラウザのURL入力欄に上のURLを入力します。)

以下のように「がとらぼ」のサイトマップのURLを送信してみました。
$ curl "http://www.google.com/webmasters/sitemaps/ping?sitemap=https://gato.intaa.net/sitemap.xml"
<html><meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head><title>Google Webmaster Tools
-
Sitemap Notification Received</title>
<meta name="robots" content="noindex, noodp">
<script src="https://ssl.google-analytics.com/urchin.js" type="text/javascript">
    </script>
<script type="text/javascript">
      _uacct="UA-18009-2";
      _utcp="/webmasters/";
      _uanchor=1;
      urchinTracker();
    </script></head>
<body><h2>Sitemap Notification Received</h2>
<br>
Your Sitemap has been successfully added to our list of Sitemaps to crawl. If this is the first time you are notifying Google about this Sitemap, please add it via  <a href="http://www.google.com/webmasters/tools/">http://www.google.com/webmasters/tools/</a>  so you can track its status. Please note that we do not add all submitted URLs to our index, and we cannot make any predictions or guarantees about when or if they will appear.</body></html>

緑色の行がPing送信のコマンドで、その後の白字の全部(HTML)がGoogleからの応答です。
「サイトマップの通知を受け取りました、クロール(予定の)リストに追加しました」という返事が表示されたのでこれで完了です。
これを「Ping(ピン)送信」と称しています。

Google XML SitemapsプラグインのPing送信結果を確認する

Google XML Sitemapsプラグインは、WordPressのXMLサイトマップを自動的に作成し、GoogleにXMLサイトマップの更新を通知することができる便利なツールです。しかし、Ping送信が正常に行われているかどうかは、WordPressの管理画面からは確認できません。「送信しました」という表示がアテにならないという意味です。WordPressのデータベースに直接アクセスして、Ping送信の結果を見る必要があります。

WordPressのデータベースにアクセスする方法は、レンタルホストや契約内容によって異なりますが、一般的にはphpMyAdminやMySQL Workbenchなどのツールを使って操作できます。データベースに接続したら、wp_optionsテーブルを開き、「option_name」カラムの値が「sm_status」のレコードを探します。このレコードの「option_value」カラムには、Ping送信の結果が記録されています。

SQLコマンドが確認する場合は以下のようにします。

> select `option_value` from wp_options where `option_name` = 'sm_status';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| option_value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| O:28:"GoogleSitemapGeneratorStatus":4:{s:40:" GoogleSitemapGeneratorStatus start_time";d:1660907920.331393;s:38:" GoogleSitemapGeneratorStatus end_time";d:1660907921.110994;s:42:" GoogleSitemapGeneratorStatus ping_results";a:1:{s:6:"google";a:5:{s:10:"start_time";d:1660907920.333783;s:8:"end_time";d:1660907921.105341;s:7:"success";b:1;s:3:"url";s:97:"http://www.google.com/webmasters/sitemaps/ping?sitemap=https%3A%2F%2Fgato.intaa.net%2Fsitemap.xml";s:4:"name";s:6:"Google";}}s:39:" GoogleSitemapGeneratorStatus auto_save";b:1;} |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

この例ではend_time";d:1660907921・・というのがPing送信完了日時で、1660907921はUNIX時間で2022年08月19日20:18:40(JST)です。この記事を書いている時点では「小一時間ほど前」になります。successの文字列が見えているので送信成功です。上の例ではわかり易いように黄色にしています。
そのsuccessの少し後に http://www.google.com/webmasters/sitemaps/ping?sitemap=https%3A%2F%2Fgato.intaa.net%2Fsitemap.xml というのが見えていますが、先に挙げた送信先URLなので正常ですなお、URL中のコロン「:」やスラッシュ「/」はURLクエリには直書きすべきではないので%3Aや%2Fに変換されています。

実行の際の最後に注意点として、Google XML Sitemapsプラグインでは「GA TID」という設定項目があります。これはGoogle Analytics(グーグルアナリティクス)用のトラッキングIDです。もしもこの設定項目を空白にしていると、Ping送信が行われない可能性があります。そのため、「GA TID」設定項目は必ず何らかの値(例えば「1」)を入力しておくことをお勧めします。このGA TIDの入力を必要とする挙動はGoogle XML Sitemaps v4.1.6で解消されています。

以上でGoogle XML SitemapsプラグインのPing送信結果確認方法と注意点をご紹介しました。

何故Ping送信がどうでも良い機能なのか

Google XML Sitemapsプラグインはsitemap.xmlのURLをGoogleにPing送信しますが、このsitemap.xmlはサイトマップインデックスファイルです。サイトマップインデックス(目次)には子サイトマップのURLが書かれています。子サイトマップにはコンテンツ(投稿/記事)URLやカテゴリ/タグなどのURLが書かれています。
サイトマップインデックスのURLをGoogleに送信するとGooglebotはすぐにサイトマップインデックスを取得します。しかし、サイトによりますが、子サイトマップはすぐにクロールするわけではありません。実際には、数日から数週間かかることもあります。これはGoogleが自分でクロールするタイミングを決めているからです。つまり、Ping送信しても子サイトマップやそこに書かれているコンテンツURLのページが早くクロールされる保証はありません。

前回の記事では、WordPress用のGoogle XML SitemapsプラグインのPing送信が必須ではないと書きましたが、Ping送信機能がどうでも良い理由がお分かりいただけたでしょうか。

XML sitemapのPing送信が実は役立たずではなかった話 も併せてお読み下さい。

ところで、Googleのドキュメント「サイトマップの作成と送信」によるとPingの送信先は以下になっています。
https://www.google.com/ping?sitemap=サイトマップURL

XML SitemapsプラグインのPing送信先は以下になっています。
http://www.google.com/webmasters/sitemaps/ping?sitemap=サイトマップURL
後者は旧ウェブマスターツール系のURLになっています。プラグインが新しいURLを使わない理由を知りたいところです。

GooglebotにクロールされやすくするためのSearch Consoleの活用法

Googlebotというのは、Googleがウェブサイトをクロールするために使うプログラムです。クロールというのは、ウェブサイトの内容を読み取ってデータベース(インデックス)に保存することです。このデータベースから検索結果が作られます。つまり、Googlebotにクロールされないと、ウェブサイトやページはググっても出てこないということです。

しかし、Googlebotはすべてのウェブサイトを平等にクロールしません。新しいドメインや記事数が少ないサイト、長期間更新されていないサイトなどは、Googlebotがあまり訪れてくれません。そのため、検索インデックスに登録されるのも遅くなります。

そこで役立つのがSearch Consoleというツールです。Search Consoleでは、自分のウェブサイトの状態を確認したり、Googleに対してリクエストしたりできます。例えば、サイトマップというファイル(複数種類に対応します)を登録することで、自分のウェブサイトにあるページのURLを一覧で見せることができます。また、インデックス登録リクエストという機能を使うことで、特定のページを優先的にクロールしてもらうことができます。

新しいサイトや長期放置したサイトでは、過去記事も含めてインデックス登録リクエストをする必要があります。また、新しい記事を公開するたびにもリクエストをする方が良いです。これは半年から1年くらい続ける必要があります。そうすることでGooglebotが頻繁に訪れるようになります。

一方で、既にGooglebotがよく訪れるようになったサイトでは、インデックス登録リクエストはあまり必要ありません。サイトマップが正しく表示されていれば、新しい記事もすぐにクロールされます。このサイト「がとらぼ」でもそうです。「がとらぼ」は公開/更新頻度は高い方ではありませんが、記事を公開して数時間以内に検索インデックスに登録されるようになっているので個別のインデックス登録リクエストは必要なくなっています。