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

Ping
©いらすとや.

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

この記事のPing機能はGoogle XML Sitemapsプラグインのオマケ機能で、WordPress標準のサイトマップ表示機能や他のサイトマップ出力プラグイン(の多く)には搭載されていません。何で他(の多く)には無いかというと「どうでも良い」からだと思う。

Google XML Sitemapsサイトマッププラグインに含まれるPing機能って何だろう?

XMLサイトマップ出力用プラグインには、一部ではあるけど更新通知(Ping)機能が含まれているものがある。これはXMLサイトマップの出力とは別の働きをするものだが関連が無くはない。そしてあった方がベターかも。
XMLサイトマップは飲食店のテーブルの上に置いてあるメニュー表のようなもの。新規のお客さんならどんなメニューがあるのかしげしげと眺めるだろうし、常連さんでも新しいメニューが増えてないか取り敢えず見るという人もいるかも。まぁ放っておけばお客さん次第になる。ここで、店の人が常連の客に「メニュー増やしました」「一部新しくしたんだよね」と声をかけたら「あっそうなんだ」でメニューを見て貰える可能性がある。とにかく、「メニュー更新したよ」これが更新通知(Ping)。
XMLサイトマップ出力用プラグインでPing機能があるものだと、ページを追加したり更新したときにPing送信を行ってGoogleにサイトマップの更新を伝える。実際には「更新したよ」ではなく「サイトマップはここよ(だから改めて見てね)」って伝えてるんだけど。

手動でPingを送信してみる

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

やってることは 既成のプラグインを使わずにコードを自作するような人なら知ってるのと同じで
http://www.google.com/webmasters/sitemaps/ping?sitemap=https://example.com/sitemap.xml にアクセスしているだけ。 https://example.com/sitemap.xml の部分は自身のウェブサイトのサイトマップの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>

緑色の行が通知のコマンドで、その後の白字の全部(HTML)がGoogleからの応答。
「サイトマップの通知を受け取りました、クロール(予定の)リストに追加しました」という返事をいただけたのでこれで完了。
これを「Ping」(ピン)と称している。
WordPressのGoogle XML Sitemapプラグインでは「投稿」「固定」ページを公開/更新した場合にこのPingを送信している。また、投稿/更新に関係なく24時間に1度程度で送信するようになっているみたい。これで更新頻度の低いウェブサイトでもSitemapの通知だけは毎日行うことになる。
という建前になっている。それを確認したいのだが通常運用状態のWordPressでは表示できないみたい。なんとももどかしい。

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

おそらく自前のウェブサーバだろうがレンタルサーバだろうが何らかの方法でWordPressのデータベースにアクセスする方法がある筈。
wp_optionsテーブルのカラム名「option_name」で値が「sm_status」のレコードを探して、そのレコードの「option_value」カラムの値を確認する。 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パラメータには直書きすべきではないので%3Aや%2Fに変換されているけど。

そして、前回書いたようにGA TIDは「1」でも何でも良いので未入力にはしない。未入力だとこのレコードが更新されないところを見るとPingが実行されていない可能性がある。

前回の記事のようにWordPressの管理パネルの表示がヘンだから信じられなくてもデータベースには一応記録があるのでそれを見ればOKということが判った。
また、通知機能が無いXMLサイトマッププラグインを使っている場合でもPingを送るのがコマンド1行でできる簡単なことなので1日1回など好きなタイミングで定期送信するようにしても良いし、多少WordPressを弄れるのであれば投稿時や更新時にフックしてping送信できる筈。

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

Googleは、Pingを送信したからといって必ずしもそれをトリガーとしてすぐにサイトマップをクロールしてくれるとは限らない。新しいサイトやコンテンツ価値が低いという扱いにされたサイトにはなかなか来ないかも。逆に、Pingを送らなくてもSearch Consoleでサイトマップを登録していればGoogleクローラーさんの都合とタイミングで勝手にクロールしてくれる。だからPing送信は無くても良いけど有るならそれでも良いよね程度のもの。(Ping送信機能があることがマイナスではありません)
で、前回の記事では、WordPress用のGoogle XML SitemapsプラグインのPing通知が正常に機能したか怪しいということと、通知(Ping)は必須ではないということを書いたけど、通知できてなくてもそれが重大な問題ではない(通知機能が必須ではない)というのはそういうこと。(Ping送信ではなくサイトマップ出力が異常なら重大な問題です)

Ping送信先のURLを見ると旧ウェブマスターツール系のシステムっぽいところから、その内廃止になるかもしれませんし、なんなら既に存在するだけで機能していないかもとさえ思います。実際のところSearch Consoleでサイトマップを登録できてそれなりの頻度でクロールされる状態で且つリクエストしてもすぐに来るとは限らない現在、存在する意味はあまりないのではと思います。

ところで、Googleさんのドキュメント「サイトマップの作成と送信」によるとPingの送信先は
https://www.google.com/ping?sitemap=サイトマップURL
XML SitemapsプラグインのPing送信先は
http://www.google.com/webmasters/sitemaps/ping?sitemap=サイトマップURL
XML Sitemapsプラグインは何故古そうなウェブマスターツール系っぽいURLを使ってるのかは本当に不明。

特に新しいドメインの新規サイト、記事数が少なくて1,2年以上長期間放置していたサイトは、リクエストしてもなかなかGooglebotが訪れてくれませんし、検索インデックスにもなかなか登録して貰えません。(つまりググっても出てきません)  サイトマップをSearch Consoleで登録してもその傾向は変わりません。登録したいページURLを個別にインデックス登録リクエストするのが最も早いでしょう。(それでも数日以上かかるかも)
新しいサイトや長期放置したサイトなどは過去記事のインデックス登録リクエストが必要ですし、投稿頻度を上げたとしても半年〜1年はコンテンツ(記事)を公開する度にSearch Consoleでインデックス登録のリクスエトをする方が良いでしょう。反対にクローラーが頻繁に訪れてくれるようになったサイトは、サイトマップがしっかり表示されていれば個別のコンテンツのインデックス登録のリクエストはほぼ不要だと思われます。過疎気味なこの「がとらぼ」でさえ投稿(記事公開)後に数時間も待たずに検索インデックスに登録されるくらいですから。

記事へのコメント

いただいたコメントは管理人が確認した後に記事の 下部(ここ)に公開されます。
コメントスパム対策: 2022年4月以降、コメント内にリンクURLを含めると自動破棄されます。(記録されません)