RSSフィード表示で「XML declaration」エラーが出た場合


サイトが多くなってくると普段から詳細チェックが出来なくなってきますよね。
RSS情報をチェックしていると、いくつかのサイトで

This page contains the following errors:

error on line 15 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.

というエラーに遭遇しました。

これは、本来先頭に来るはずのタグが、上記の場合には15行目にあるよ!というエラーです。
つまり14行の空行が出来てしまっているということ。
WordPressでは、functions.phpの書き方によって空行が出来てしまいます。

functions.phpのチェック

PHPコード(の外側について、空行を確認してみてください。

例1)PHPコードを締めた後に空行が入っている

<?php 
・・・・・
・・・・・
?>
※ここが空行

例2)PHPコード間に空行がないかチェック

<?php 
・・・・・
・・・・・
?>
※ここが空行
※ここが空行
※ここが空行
<?php 
・・・・・
・・・・・
?>

このように空行をつめる作業をするとよい。

確認1)サイトのソース

<!DOCTYPE html>

上記が一行目に来ていたら、OKです。

確認2)RSS Feedのソース(http://サイト/feed/にアクセス)

<?xml version="1.0" encoding="UTF-8"?>

上記が一行目に来ていたら、OKです。

それでも直らない場合

下記を確認

だめだ〜

ここでダメなら、う〜ん。
表示前に空行を削除するプログラムを埋め込みますか・・・・。

を参考にしてみてください。
ん?分かりづらい? 以下がその方法です。

1. wejnswpwhitespacefix.phpをWordPress直下にダウンロードして置く

wordpress
┣ wp-content
┣ wp-admin
┣ wp-include
┣ …..
wejnswpwhitespacefix.php
という感じ。

2. index.phpの最初に読み込ませてみてください。

/** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress
*/

/** * Tells WordPress to load the WordPress theme and output it. * * @var bool
*/
// 以下のinclude()の一文を入れる
include( dirname( FILE ) . "/wejnswpwhitespacefix.php");

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( FILE ) . '/wp-blog-header.php' );

ふぅ〜、こういうのはプラグインでやって欲しいもんですねぇ。
WP Total Hacksとかに入れ込んでもらえないものかな、、、、(^^;

2014年4月8日 木谷

広告

RSSフィード表示で「XML declaration」エラーが出た場合」への6件のフィードバック

  1. はじめまして。
    調度、本件でハマっておりましてこちらの記事に辿り着きました。

    wejnswpwhitespacefix.php での前の空白スペースは無事に消えました(∩´∀`)∩ワーイ
    ありがとうございます。

    しかしもう一点、xmlprc.phpのの前の空白スペースが消えません。
    同様に、includeで差し込んでみたのですがダメでした。
    ちなみにfunctions.phpの修正、キャッシュクリアも試みたのですが一向に解決できません(T_T)
    (この箇所のおかげで、feedエラーやパースエラーが頻出しています)

    xmlの場合の空白スペースの消し方について、ご教授頂けませんでしょうか?
    何卒よろしくお願いいたしますm(__)m

  2. xmlrpc.phpはJetpackや外部アプリからWordPressを編集するためのPHPなのですが、そこでエラーがでるえということなのですよね。xmlrpc.phpは、wp-load.phpを最初に読み込むのでこちらのファイルの空白もチェックしてみてください。しかしまぁ、xmlrpc.phpもwp-load.phpもシステムファイルで基本的に触ってはいけないファイルなので、そのあたりのファイルが原因で問題が起こるとは考えにくいとは思います。他の所でエラーが起きていると思いますけどねぇ。xmlrpc.phpが原因と判断したのはどういった理由でしょうか。

    • あ〜早速のコメントありがとうございます。
      そうなんですよね〜、他のところで何か絡んでるんでしょうね。。

      もうやり尽くした感もあるのですが、
      xサーバーへの移転時にFTPでUPした際、
      ほとんどのファイルの改行コードがCR+LFになってたんですね(T_T)
      これがめちゃ怪しいかなとも考えてます。

      ただブログエディタでは
      Marseditは読んでくれるんですよね。優秀です。。
      scribefireはダメでしたが ←これで読んで欲しかった

      結果的にいろいろ勉強になりましたm(__)m

      重ねて御礼申し上げます。

  3. なるほど〜。改行コード変更エディタを使って、LFにしてしまうっていう手もあるかなぁとは思います。
    ちなみにエラーは xmlrpc.php の何行目にあるとでてるのでしょうか。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中