Ошибка RSS в WordPress. Правильный метод устранения.
Май 31st, 2012 Archi
Текст ошибки имеет подобный вид:
Ошибка синтаксического анализа XML: объявление XML или текста не в начале сущности Адрес: http://mysite.ru/feed/ Строка 6, символ 1: ^
Приведу два способа её устранения.
Итак, в Рунете вы найдёте весьма распространённый, но не вполне корректный совет вида: «открыть системные файлы «feed-rss.php», «feed-rss2.php», «feed-rss2-comments.php», «feed-atom.php», «feed-rdf.php» и удалить код:
Выбросьте из головы эту дурную идею! Обновляем WordPress. Опять правим по новой? Дурно, однако. Вы уверены, что на 100% изучили и проверили на практике то, что написано на codex.wordpress.org (оф. док-я для разработчиков)?
А теперь правильный метод устранения ошибки с RSS на WordPress. Причина сего «косяка», — кривые руки разработчиков тем/плагинов. А если поточнее неконтролируемый вывод в коде. Пример того, как это может выглядеть:
<?php
echo "Мой код 1";
...
?>
<!-- А кому ты здесь пустую строчку оставил(а)? Неожиданный вывод. -->
<?php
echo "Мой код 2";
...
echo " ";
// вывод вне вызова функции, на пустом месте тоже
// приведём к все тому же /неожиданному....
?>
А должно быть:
<?php
echo "Мой код 1";
...
echo "Мой код 2";
...
?>
Проверить можете на любом плагине/теме. Поправьте код до первого состояния, и WP при активации плагина ненавязчиво сообщит: «Плагин произвёл при активации N символов неожиданного вывода. Если вы заметите ошибку «headers already sent», проблемы с RSS-лентами или другие неполадки…». Деактивируйте, верните код в исходное состояние. Исчезло?
Отсюда решение. По очереди отключаем плагин за плагином, попутно проверяя не исчезла ли ошибка. Правим код плагина устраняя «неконтролируемый вывод.», проще говоря пустые строки между вызовами PHP и неуместные echo/print с пробелами. Активной темы тоже касается (просматриваем functions.php).
Та же история и с эпической «cannot modify header information».