Владельцы блогов на CMS WordPress периодически сталкиваются с проблемой неработающей подписки RSS своего блога. Одна из проблем это сообщение
Ошибка разбора XML Ошибка разбора XML: синтаксическая ошибка (Строка: 2, Символ: 0) Обработать документ как HTML Ошибка: XML declaration not at beginning of document Описание: http://www.w3.org/TR/REC-xml/ 1: 2: <!--?xml version="1.0" encoding="UTF-8"?-->3:
при нажатии на ссылку “Подписка RSS”. Это следствие проблем с кодировкой. Чаще всего они возникают когда редактирование файлов происходит не в тех редакторах и без соблюдения кодировки. Для начала нужно определиться – виновата тема, плагины или движок?
Прежде всего если у вас подписка организована через FeedBurner, проверьте активирован ли плагин FeedBurner FeedSmith Extend. Именно он отвечает за переадресацию на FeedBurner Ваших подписчиков. Если с плагинов всё в порядке то меняем тему, отключаем плагины, если проблема осталась – значит причина в файлах движка wordpress.
Вариант 1. Исправляем ошибки кодировки и конвертируем базу данных блога в UTF-8. Для этого существует замечательный плагин Convert WP Database to UTF-8. Конечно перед любыми действиями необходимо сделать бэкап, но у меня этот плагин ни разу не создал проблем. Наоборот он как палочка выручалочка. При первых же проблемах на блоге сначала использую его. После установки плагина у Вас в админпанели в меню плагины появится пункт UTF-8 DB Converter . Смело нажимаем, конвертируем.
Вариант 2. Можно попробовать решить проблему плагинами типа Fix Rss Feeds и Fix My Feed RSS Repair но с ними нужно быть осторожнее. После их “работы” возможно придётся переустанавливать wordpress.
Вариант 3. Решить проблему с RSS можно ручной правкой кода. Заходим с помощью FTP клиента в папку “wp-includes”, и открываем в любом текстовом редакторе поддерживающим кодировку UTF-8 без BOM (например Notepade++), следующие файлы: “feed-rss2.php“, “feed-rss2-comments.php“, “feed-atom.php“, “feed-rdf.php“? “feed-rss.php“.
В начале каждого из них находим строчку:
<!--?xml version="1.0" encoding="UTF-8"?-->
и удаляем.
Но это не всё. Если у Вас подписка RSS организовано стандартными средствами wordpress, то всё заработает. Просто введите в адресную строку браузера http://ВАШ_САЙТ/feed/. Если работает встроенная, но не работает через FeedBurner , то проверьте плагин о котором писалось выше . Или можете остаться на встроенной подписке. В этом случае просто нужно на иконку RSS “прикрутить ссылку” на http://ВАШ_САЙТ/feed/. В виде кода (отредактируйте под свой сайт) это может выглядеть так:
<a style="position: fixed; right: 0px; top: 294px;" title="Подписаться на мой фид" type="application/rss+xml" href="http://ВАШ_САЙТ/feed" rel="alternate"><img style="border: 0;" src="ССЫЛКА_НА_ИКОНКУ_RSS" alt="" /></a>
Но учтите, что пользователи Chrome не смогут без дополнительных расширений подписаться на такую подписку.
Если всё вышеперечисленное не помогло – переустановка wordpress.
Удалила куски кода и лишние пробелы из указанных выше файлов – фитбернер подключился без крокозябров. А родной фид так и остался крокозябровым. Задала кодировку через хтаксесс – заработало все нормально. Вернула куски удаленного кода – продолжило работать. Хостинг hoster.ru (Служба поддержки сильно мозги не напрягает, перенесли аккаунт с одного на другой сервер без проблем, но грязно, больше проблем не возникало).
Всем удачного разрешения проблемы!