Лечим ошибки при генерации RSS фида в wordpress
Обнаружил сегодня неприятный для себя сюрприз. Видимо, после смены темы фид генерируется с ошибками. соответственно – feedburner отказался принимать. Перестала работать подписка через feedburner и так далее. Найдём причину и вылечим больного!
Для начала пару слов о том, как обнаружил проблему. Во-первых, не пришло письмо (я сам для контроля подписан на свой блог). Во-вторых, заходим в FeedMedic. И он нам и говорит (слева).
Идём дальше. Грузим feed сами http://sergey-s-betke.blogs.novgaro.ru/feed. В результате получаем некий файл:
_ _ <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"> <channel> <title>Мой IT блог</title> <atom:link href="http://sergey-s-betke.blogs.novgaro.ru/feed" rel="self" type="application/rss+xml" /> <link>http://sergey-s-betke.blogs.novgaro.ru</link> <description>Заметки из жизни IT менеджера</description> <lastBuildDate>Thu, 25 Nov 2010 21:19:48 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item> <title>Установка D-Link D-ViewCam</title> <link>http://sergey-s-betke.blogs.novgaro.ru/ustanovka-d-link-d-viewcam</link> <comments>http://sergey-s-betke.blogs.novgaro.ru/ustanovka-d-link-d-viewcam#comments</comments> <pubDate>Thu, 25 Nov 2010 14:59:12 +0000</pubDate> <dc:creator>Бетке Сергей Сергеевич</dc:creator> <category><![CDATA[ Видеоконтроль ]]></category> <guid isPermaLink="false">http://sergey-s-betke.blogs.novgaro.ru/ustanovka-d-link-d-viewcam</guid> <description> <![CDATA[ Для рабочих мест, с которых будем осуществлять взаимодействие с камерами, устанавливаем ПО DViewCam. Опять должен обратить внимание на существенную разницу в версиях ПО на диске и на ftp. На диске версия постарее, но в msi. Если будет кому нужен - выложу. Итак… P.S. Сразу сделаю небольшое отступление. Для развёртывания пакета msi, подготовленного с помощью InstallShield, [...] ]]> </description> <wfw:commentRss>http://sergey-s-betke.blogs.novgaro.ru/ustanovka-d-link-d-viewcam/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
Первое, на что следует обратить внимание – первые строки пустые! То есть – данный файл уже не является валидным xml файлом. Кстати, проверить feed так же можно и с помощью on-line сервиса.
Итак, теперь необходимо разобраться, по какой-же причине в feed вылетают пустые строки в самом начале…
Открываем functions.php нашей темы, и что же мы видим:
<?php if (!empty($_SERVER['SCRIPT_FILENAME']) && 'functions.php' === basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!'); ?> <?php load_theme_textdomain('inanis');?> <?php if(function_exists('add_theme_support')){ add_theme_support( 'post-thumbnails' ); // Add it for posts set_post_thumbnail_size( 75, 75 ); add_image_size( 'interior-thumbnail', 150, 9999 ); // Permalink thumbnail size } ?> <?php //Custom Header Stuph ... ?>
Как уже понятно, именно это файл и содержит пустые строки (выделены), которые и попадают в вывод перед заголовком xml файла фида. Убираем пустые строки – и всё ok!
Отзывы » (2)
RSS комментарии
Обратная ссылка
Добрый день,
Я замучился с аналогичной проблемой — пустыми строками RSS. Пользуюсь плагином Fix RSS Feed, все бы ничего, но после его использования перестает работать плагин кэширования Hyper Cache, а он также важен для меня.
Проверил все php файлы и в корневой папке wordpress и файлы темы на предмет пустых строк в конце, все убрал, но проблема не решена. Чувствую, что тоже нужно искать причину в файле functions.php темы. Но как это сделать?!
Как, например, Вы определили, что строки 5 и 7 на Вашем последнем скриншоте и есть причина пустых строк?! Я до сих пор думал, что нужно искать именно пустые строки. А если строки 5 и 7 генерят в итоге пустые строки, то на кой черт их вообще тогда добавляли в functions.pfp?!
Я, видимо, не совсем правильно выразился, или совсем неправильно, если быть точным. Пустые строки генерит конструкция:
Ведь символ конца строки уходит напрямую в «поток» в этом варианте. Исправляем так:
Ну или просто удаляем эту лишнюю пару.
Итого, ещё раз — ошибку нам давал не сам код php, а неграмотно применённые теги, обрамляющие код.
P.S. А почему полез сразу в functions.php — так это очевидно: при генерации фида другие составляющие темы роли не играют (они просто не подгружаются), на другой теме проблем не было (то есть — дело и не в плагинах, и не в wordpress, только в теме), отсюда и сделал вывод — искать надо в functions.php темы.