Статья размещена автором Бетке Сергей Сергеевич

Лечим ошибки при генерации RSS фида в wordpress

Обнаружил сегодня неприятный для себя сюрприз. Видимо, после смены темы фид генерируется с ошибками. соответственно – feedburner отказался принимать. Перестала работать подписка через feedburner и так далее. Найдём причину и вылечим больного!

Лечим ошибки при генерации RSS фида в wordpress Для начала пару слов о том, как обнаружил проблему. Во-первых, не пришло письмо (я сам для контроля подписан на свой блог). Во-вторых, заходим в FeedMedic. И он Лечим ошибки при генерации RSS фида в wordpressнам и говорит (слева).

Идём дальше. Грузим 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. Если будет кому нужен - выложу. Итак&#8230; 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)

  1. Добрый день,
    Я замучился с аналогичной проблемой — пустыми строками RSS. Пользуюсь плагином Fix RSS Feed, все бы ничего, но после его использования перестает работать плагин кэширования Hyper Cache, а он также важен для меня.
    Проверил все php файлы и в корневой папке wordpress и файлы темы на предмет пустых строк в конце, все убрал, но проблема не решена. Чувствую, что тоже нужно искать причину в файле functions.php темы. Но как это сделать?!
    Как, например, Вы определили, что строки 5 и 7 на Вашем последнем скриншоте и есть причина пустых строк?! Я до сих пор думал, что нужно искать именно пустые строки. А если строки 5 и 7 генерят в итоге пустые строки, то на кой черт их вообще тогда добавляли в functions.pfp?!

    • Я, видимо, не совсем правильно выразился, или совсем неправильно, если быть точным. Пустые строки генерит конструкция:

      ?>
      <?php
      

      Ведь символ конца строки уходит напрямую в «поток» в этом варианте. Исправляем так:

      ?><?php
      

      Ну или просто удаляем эту лишнюю пару.
      Итого, ещё раз — ошибку нам давал не сам код php, а неграмотно применённые теги, обрамляющие код.
      P.S. А почему полез сразу в functions.php — так это очевидно: при генерации фида другие составляющие темы роли не играют (они просто не подгружаются), на другой теме проблем не было (то есть — дело и не в плагинах, и не в wordpress, только в теме), отсюда и сделал вывод — искать надо в functions.php темы.

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка