当ブログ、常時SSL、http → httpsに切り替えてから、ほぼ1ヶ月が経過する。
ここで、移行した時点から、まだ解決していない問題が一つある。
このブログのRSSフィードを自社サイト・タスクマザーで取得できないのである。
トップページに、このブログの新着記事3件をRSSフィードで表示している。
表示方法は、MTテンプレートタグである「MTFeed」関連のタグを使って、フィードを取得し表示させていた。
しかし、SSL化したあと、フィードを取得出来なくなった。
現在は恥ずかしながら、トップページテンプレートに記事タイトル、更新日付を手動で入力更新している。
この1ヶ月、いろいろ原因を探り対策を講じてきたが、いまだ解決出来ず?!、大変困っている状態である。
これまでの対応について、解決の糸口が見つかればと明記する。
まずは、現在のhttpsのフィード(feed)の状況。
◯各種ブラウザで、フィードURL(https://www.taskmother.com/feed)で問題なく表示される(エラー出力なし)
◯スマホアプリ「feedly」で登録済みであったが、httpsで再登録する。
SSL後、2記事更新後あたりから、一部動きがおかしい。
記事リスト(写真、タイトル、概要)表示後、記事を選択すると、まずFeedlyアプリ内でFeedly形式のブログ記事が表示されるはずだが、アプリ内記事は表示されず、すぐに連携させているChromeでブログ記事が表示する。
◯サーチコンソールのサイトマップ登録完了
WPプラグインでXMLサイトマップを登録、合わせてRSSフィードも登録し、送信11、インデックス数11で、問題なく登録されている。
◯RSSフィードの構文チェック、Feed Validation Service」で確認
「Feed Validator for Atom and RSS」も同様のツール。
問題が発生した当初、「本文」にWarningが発生していたが、WP設定>表示設定を変更し、現在は、「Congratulations!」判定で問題なし。
・RSS/Atom フィードでの投稿数→5件
・RSS/Atom フィードでの各投稿の表示→抜粋表示
以下、現在までに実施した記録である。
1.MTFeedタグで取得できなくなる。
MTタグで変更したのは、フィードファイル名の変更のみ。
http://www.taskmother.com/feed → https://www.taskmother.com/feed
原因として考えられることを仮説・検証してみた。
<仮説1>
MTFeedは、SSLには対応していないのではないか?
<検証1>
Web上の常時SSLの複数サイトのRSS2.0のフィードで出力してみた。
WPで出力されたRSSフィードをメインに、MTで出力されたRSSフィードも検証した。
<結果1>
常時SSLでも問題なく出力されるWebサイトが確認できた。
なので、MTFeedタグは、httpsでも対応している。
しかし、高い頻度でHTTPSのWPフィードで、このブログと同様に、フィードを読み込めず出力しないものがあった。調べた数はきちんとカウントしていないが、10数サイトのうち、30%強はあったと感じている。
<仮説2>
原因は特定できなかったが、MTFeedでの出力を中止して、別のツールや仕組みを使って出力することとした。
※MTFeedを止めた理由
・更新日付を出力できないこと(該当タグがない)
・ブログ記事更新時にテンプレートを再構築しなければならない。
以上2点のことがあったので、あっさり代替ツールへの移行を決定!
<検証2>
代替ツールの選定
Google Feed APIは、正式に2016年9月29日に提供終了。
昨年12月にも一時停止していたこともあり、その代替案の記事がいくつかアップされていたので、それを参考にPHP、もしくはjQuery +PHPで表示することとした。
参考にしたサイト:- 【jQuery + PHP】クロスドメイン対応版:Google Feed API の代替案を紹介します。 – ONZE
<結果2>
jQuery +PHP版、出力されず。
さらに、PHP版:【PHP】外部サイトのRSS情報を取得して表示させる方法。 – ONZEで検証。
しかし、これも出力されず。
検証1と同様に、別のRSSフィードをセッティングして行ったところ、出力されるフィード、されないフィードがあった。
出力されないRSSフィードでは、プログラム実行エラーは起こっていない。
PHPのデバックを行ったところ、RSSフィードを読み込みXML関連の関数である
・simplexml_load_file
・file_get_contents
・simplexml_load_string
の戻り値が、falseになり読み込めていないことが判明。
これは、サーバ環境の問題か?と、「さくらインターネット(推測ですが)+https+WPのサイト」を探して出力させてみた。
結果は、出力可能!(とはいえ、出力しないWPのRSSフィードもあった)
その後、PHPで迷宮に入り始めたが、手がかりの一部でも見つけてテストしてみようといろいろ検証継続する。
ユーザエージェントを偽装して読み込むという手法も行ったが、NG。
参考:はてなブックマークのRSSをPHPで取得する方法 – 浜村拓夫の世界
simplexml_load_file()で特定サイトのrssが取れない – For Want Of A Better Word
<仮説3>には進めず、未だ解決できず。WP4.6にアップグレードしたが、あたりまえだが変化なし。
以後、解決にむけて記事更新中とする。