WordPressのバージョンアップでエラーが解消されました!
検証記事へのリンクは、この記事の最後にあります。
Contents
Googleにサイトの更新情報を伝える
ブログを更新しても、Googleの検索にすぐには反映されません。
せっかく書いたのですから、たくさんの人に見てもらおうと思うと、Googleにこちらから更新した情報を伝える必要があります。
そこで登場するのがGoogle Search Consoleです。
ここにサイトの情報を登録し、サイトマップを登録しておきます。
すると、サイトを更新するとサイトマップに反映され、Googleに伝わるという仕組みです。
私はWordPressのプラグイン「Google XML Sitemaps」を使っていますので、簡単に登録ができました。
いやはやありがたい機能です。
ただ、Google Search Consoleを見てみると、サイトマップの更新は頻繁にはされていないようです。
もう少し短い間隔で更新情報を伝える方法はないかと調べるとRSSフィードを使えばいいという情報がありました。
具体的には、サイトマップの登録と同じ方法でRSSフィードを登録するだけでOKなようです。
RSSを登録しても「日付の値が無効です」とエラー
WordPressのRSSフィードURLは幾つか種類があります。
- http://example.com/?feed=rss
- http://example.com/?feed=rss2
- http://example.com/?feed=rdf
- http://example.com/?feed=atom
どれでも使えるようです。
またカスタムパーマリンクを使っている場合は以下の書き方もできるようです。
- http://example.com/feed/
- http://example.com/feed/rss/
- http://example.com/feed/rss2/
- http://example.com/feed/rdf/
- http://example.com/feed/atom/
早速、Google Search ConsoleにRSSフィードを登録してみました。
まずはテストしてみることにしたのですが、テスト結果でエラーが表示されます。
RSSフィードに手を加えた覚えはないので、エラーとなる原因が分かりません。
調べた結果、WordPress 4.6までなら問題ないのですが、WordPress 4.7ではエラーが出るようです。
当サイトの環境は4.7に上げているので現象としては一致します。
回避策は4.6にダウングレードするか、PHPの修正しかありません。
ダウングレードすると色々と影響がありそうなので、PHPの修正で回避することにチャレンジします。
PHPの処理で日付の書式設定を修正する
修正するソースは「feed-rss2.php」です。
これは「/wp/wp-include/」フォルダにあります。
エラーの原因は日付書式がローカライズされていることのようです。
ですから、修正は日付書式がローカライズされないようにしなければなりません。
私の環境は、このソースの47行目に該当箇所がありました。
echo $date ? mysql2date( 'D, d M Y H:i:s +0000', $date ) : date( 'D, d M Y H:i:s +0000' );
mysql2date()の引数に「false」を加えて、日付書式がローカライズされないようにします。
echo $date ? mysql2date( 'D, d M Y H:i:s +0000', $date, false ) : date( 'D, d M Y H:i:s +0000' );
この例では「feed-rss2.php」を修正しましたが、RSSの種類によっては別のファイルが対象となる場合があります。
対象となる可能性があるファイルは以下の通りです。
- feed-atom-comment.php
- feed-atom.php
- feed-rdf.php
- feed-rss.php
- feed-rss-comment.php
- feed-rss2.php
RSSフィードは反映に時間がかかる
修正が終わったので、Google Search Consoleでもう一度テストしてみましたが、相変わらずエラーが表示されます。
自分でRSSフィードURLを表示させると、エラーとなっている日付書式はローカライズされていません。
修正した内容が反映されないときは、キャッシュの存在が怪しいので、RSSフィードのキャッシュについて調べました。
するとWordPressのRSSフィードはデフォルト24時間保持するようになっているようです。これを短くすることもできるようですが、あまりソースをいじりたくなので、エラーが出てもGoogle Search Consoleに登録しておいて、後日確認することにしました。
翌日、Google Search Consoleから「再送信」を実行するとエラー表示が消えました。
今後、WordPressのバージョンアップで修正される可能性がありますが、バージョンアップしても念のために確認しておいたほういいでしょうね。
コメント