Решаем проблему с XML declaration в RSS

Пробел в RSS файлах
Пробел в RSS файлах
WordPress — удивительная платформа. Из него можно сделать все что угодно: от блога до кофеварки. Но иногда он подкладывает такую свинью, что в коде приходится копаться часами. Так случилось и вчера…

Уже поздней ночью я решил проверить количество подписчиков FeedBurner и был неприятно удивлен его неработоспособностью. Проверив RSS-фид, оказалось что и он не работает. Причем, пару дней назад все прекрасно работало. На остальных блогах все было нормально. В итоге, потратив час времени, ошибку устранил так сказать жёсткими методами. Но об этом и многом другом теперь поподробнее.

Опера при открытии фида ругалась матом — XML declaration not at beginning of document и посылала меня учить XML разметку. Гугловский Хром неспешно намекал на ошибку — This page contains the following errors: error on line 1 at column 2: XML declaration allowed only at the start of the document. Below is a rendering of the page up to the first error. И также призывал меня изучить правила разметки.

Покурив мануал на данную тематику, я принялся исправлять ошибку.

1. Попытки удаления лишних пробелов в function.php и wp-config.php успеха не дали. Фид по прежнему отказывался работать, громко матерился и постоянно выдавал ошибку.

2. Установка плагина Fix RSS Feed вообще вывела из строя весь блог. Прогружалась только первая статья блога. В итоге лишь после перезаливки папок wp-admin и wp-includes блог восстановил работоспособность. Перед установкой данного плагина обязательно сделайте бекапы данных папок.

3. Самым действенным вариантом как всегда оказался метод ковыряния кода в блокноте.
Дабы восстановить работу RSS-ленты открываем файлы: «feed-atom.php», «feed-rdf.php», «feed-rss.php», «feed-rss2.php», «feed-rss2-comments.php» в блокноте. Лучше использовать для этих целей Notepad ++.
Находим в них строку (она в начале):

echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';

И смело удаляем ее.Сохраняем, заливаем на сервер и радуемся работоспособности RSS фида.
После этого топаем в FeedBurner аккаунт, открываем вкладку Troubleshootize и кликаем Resync Now. Этим мы ресинхронизировали нашу RSS ленту.

Порой у меня возникают ощущения, что WordPress пишут российские программисты, ибо все исправляется только вмешательством в код.


9 comments

  1. Vum

    Хороший пост! Подчерпнул для себя много нового и интересного!

  2. Resort

    Спасибо, ты просто спас! Я долбался больше 5 часов…

  3. Сергей

    Спасибо!!! Помогло только удаление строк!

  4. Eric Newman Post author

    Ну так гляньте в конце файла, возможно лишний пробел завалялся

  5. Kostya

    Ничего не помагает. Валидатор пишет, что есть пробел и ссылка какая то не корректная что ли:
    Sorry

    This feed does not validate.

    line 1, column 1: Blank line before XML declaration [help]

    ^
    In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendation.

    line 14, column 88: Self reference doesn’t match document location [help]

    … rel=»self» type=»application/rss+xml» />

    помогите…

  6. Austin

    Не знаю, удалил эту строку в указанных файлах, ничего не поменялось. Как выдавало ошибку, так и выдает…

  7. Оптимист

    Спасибо! Как всегда все решается просто, только сначала нужно хорошенько покопаться в проблеме. За это респект автору!

  8. Дядя Степа

    Спасибо! Помогло только удаление строки!

  9. Игорь

    Помогло, спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *