はじめに
WordPressのRSS読み込みプラグイン(「Feedzy RSS Feeds Lite」など)を使って、ライブドアブログの新着記事を取得しようとした際、エラーが出て読み込めずお困りではありませんか?
本記事では、ライブドアブログのRSSが取得できない原因と、functions.phpを使ってサクッと解決する方法(コピペOK)をご紹介します。
2026年9月14日のお昼くらいからライブドアブログ系のRSSが取得エラーとなりました。
なぜエラーになるのか?(原因)
エラーの原因は、ライブドアブログ側から配信されているRSSフィード(index.rdf)のデータ構造にあります。
本来、RSSなどのXMLデータは「1行目の1文字目」から記述が開始されなければなりません。しかし、ライブドアブログのデータは先頭に不要な「空白行」が含まれた状態で配信されています。
この空白行のせいで、WordPress側の解析システムが「規格違反のデータである」と判定してしまい、error on line 2 at column 6(2行目で宣言が検出された)といった構文エラーを引き起こして読み込みを停止してしまうのです。
※ライブドアブログでは atom.xml などの代替形式が提供されておらず、index.rdf(RSS 1.0)を使うしかありません。
解決方法:データを取得する際に空白を自動削除する
根本的な解決策として、WordPressがライブドアブログからデータを受け取った直後に、「先頭の不要な空白・改行を自動で削る処理」を追加します。
ステップ1:子テーマの「functions.php」を開く
- WordPress管理画面の左メニューから 「外観」>「テーマファイルエディター」 を選択します。
- 画面右上の「編集するテーマを選択」が、現在使用中の「子テーマ」になっていることを確認します。
- 右側のファイル一覧から 「テーマのための関数 (functions.php)」 をクリックして開きます。
ステップ2:空白除去コードを追記して保存する
既存のコードは絶対に消さず、ファイルの一番下の行に以下のPHPコードをコピー&ペーストしてください。
// 外部フィード(ライブドアブログ等)取得時に先頭の不要な空白・改行を削る処理
add_filter('http_response', function($response, $parsed_args, $url) {
if (isset($response['body']) && is_string($response['body'])) {
// フィード取得時のレスポンス先頭から空白・改行文字を除去
if (strpos($url, 'livedoor') !== false || strpos($url, '.rdf') !== false) {
$response['body'] = ltrim($response['body']);
}
}
return $response;
}, 10, 3);貼り付けたら、画面下部の「ファイルを更新」ボタンを押します。「ファイルの編集に成功しました」と表示され、ブログが真っ白になっていなければ成功です。
ステップ3:Feedzyでフィードを再読み込みする
Feedzy(またはご利用のRSSプラグイン)の設定画面を開き、対象のURL(例: http://〇〇.livedoor.biz/index.rdf)の読み込み・更新処理を行ってください。
プレビュー画面や投稿一覧に、ライブドアブログの記事情報が正常に表示されれば作業完了です!
作業時の注意点・補足
- 必ず「子テーマ」に追記してください
親テーマのfunctions.phpに追記すると、テーマのアップデート時に設定が消えてしまいます。必ず子テーマを使用して管理してください。 - ライブドアブログ側が仕様変更した場合も安全です
将来的にライブドアブログ側がシステムを修正し、先頭の空白行がなくなった場合でも、このコードは何の悪影響も及ぼさず、そのまま安全に動作し続けます。 - サイトの動作は重くなりません
ライブドア関連のURLや.rdfに限定して処理を行う条件分岐(strpos)を入れているため、他の通信やサイトの表示速度に悪影響を与えることはありません。