他のサイトでのお話ですが、たまたまRSS配信が必要となりRSSのテストをしていると何故か不安定な動作をするので悩んでしまいました。
確かにRSSのURL(サイトURL / ?feed=rss2)と指定するとRSSの中身が見れるので問題ないと思っていました。
しかし何故か連携サイトによってうまく動作しなかったりしたんです。
何で?
色々調べてみましたよ。しかし中々今回の私のケースに当てはまるものがありませんでした。
良い経験をさせてもらったので、他の人の参考になるかもしれないので記録しておきます。
RSS配信を正常にするまで
まずRSS配信が正常に出来ているかを以下のサイトでチェックしました。
上記のようにエラーとなりました。
このエラーをみて何故検出しないのかをHTMLを見てみると。。。
フィードURLが正しく出力されてない!
headタグに記載されているRSSの指定が下記のようになっていました。
<link rel="alternate" type="application/rss+xml" title="サイトタイトル » フィード" href="サイトURL" /> <link rel="alternate" type="application/rss+xml" title="サイトタイトル » コメントフィード" href="サイトURL/?feed=comments-rss2" />
これ分かります?おかしい部分。
コメントフィードに関しては「サイトURL / ?feed=comments-rss2」と指定されていて正しいです。
しかし、フィードは何故か「サイトURL」しか指定されていないんですね。
これは通常ですと「サイトURL / ?feed=rss2」となるわけなんですね。
そこで試してみたのが次のことです。
フィードURL出力をfunctions.phpへ指定する
WordPressではフィードURLが出力されるようにfunction.phpへ明示的に指定した方良いそうです。その内容は下記となります。
<?php add_theme_support( 'automatic-feed-links' ); ?>
試してみましたがダメ・・・・。
次に試してみたことは
キャッシュ系の動作の確認
RSS動作がおかしい場合にプラグインだったりサーバー側のキャッシュ系の設定が悪さをしていることがあるような説明をされているサイトが結構ありました。
しかし今回の事象とは何か違うような気がしたのですが一応見直しました。
プラグインに関しては全く利用していなかったので問題なしです。「Autoptimize」というプラグインが悪さをすることがあるようですが、今回の事象とは異なるようです。
サーバーはロリポップなのですが「ロリポップ!アクセラレータ」がキャッシュ系の機能となります。そこで下図のように「初期設定」から「[css][js][ico]・・・・・」に変更しました。
下図のような感じです。
ここまで試しましたが。。。。
うまくいかない。。。
そこでネットで発見したのが
パーマリンク設定が「基本」はNG?
次のサイトに今回の事象と同じ悩みで質問されている方がいました。そしてその回答の中にヒントが。
https://teratail.com/questions/297576
下記の条件のどちらかを満たした場合に、RSSのURLが正常に出力されない事象が発生することが分かったとのこと。
・WordPress5.5以上
・パーマリンク設定が「基本」よってバージョンを5.4.2に下げることで解決しました。
引用:teratail「https://teratail.com/questions/297576」
今回の事象ですがWordPress5.5以上も当てはまるのですが、パーマリンク設定が「基本」も当てはまっています。
WordPressは5.6なのでとりあえずそのままとし、パーマリンク設定を「基本」をやめることにしました。
「基本」から「カスタム構造」に変更し「/?p=%post_id%」を指定しました。このように指定すれば「基本」と同じURLとなります。
パーマリンク設定を変えた結果
headタグ内のRSSのURLが正しく出力されるようになりました。コレってどうなんですかね。
WordPressのバージョンアップすると知らないうちにRSS配信が出来なくなってしまっているサイトもあるかもしれませんね。
ま、RSS配信を必要としないサイトも増えてきているので何とも言えません。
ただRSSを配信する場合は悩ましい問題でした。