サイトのRSSフィードが更新されないときの解決方法
初出:自分のサイト
サイトのRSSフィードをチェックしたらエラーを吐き出していたので修正しました。
#WordPress 特有の問題かと思いきやそんなことはなかったのでメモ。
当サイトのRSSはこちらです。→ https://libsy.net/feed
1. エラー内容と解決方法
W3C Feed Validation Service で確認。
https://libsy.net/wp-content/uploads/2018/04/20180405_01.png
表示されたエラー
https://libsy.net/wp-content/uploads/2018/04/20180405_02.png
↑ ハイライトされた115行目に不可視文字が入っていました。web上だと見えませんが、Bracketsなどのエディタにコピペすると不可視文字が確認できました。
https://libsy.net/wp-content/uploads/2018/04/20180405_03.png
↑ web上のソースコードやWPの編集画面では確認できない
https://libsy.net/wp-content/uploads/2018/04/20180405_04.png
↑ エディタでは確認できる(上段)
記事タイトルの不可視文字を消して更新すると、フィードが配信されるようになりました。
参考:WordPressでRSSフィードがエラーとなった時の対処方法
------
2. その他のエラー解決法(今回はやらなくてよかったこと)
functions.php の余計な空行を消す
functions.phpに、<?php ?>で囲まれた部分の外に空白や空行が含まれると、WordPressから出力されるhtmlの上部に空行が挟まれるそうです。
参考:WordPress でページのソース上部に空行ができる – カラクリ.jp
wp-includes/feed-rss2.php等の書き換え
フィードの<?xml宣言より前に空行が挟まれる場合は、以下のPHPの2行目にob_end_clean();を挿入する。(出力のバッファリングを制限)
wp-includes/feed-rss2.php
code:feed-rss2.php
<?php
ob_end_clean();
wp-includes/feed-rss2-comments.php
code:feed-rss2-comments.php
<?php
ob_end_clean();
参考:WordPressのRSSエラー(XMLパースエラー)の対処法 – kngy.net
今回はこれが原因ではありませんでしたが、調べたので一応メモ。
(これWP更新する度に書き直さなくてはいけないから面倒そうですね)