Выводим любой RSS фид у себя на блоге

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

В WordPress есть функция fetch_feed($url), которой нужно передать ссылку на фид и она его получит и создаст из полученных данных объект с данными фида — это заголовок, ссылка, текст, автор, категория и т.д. Какие данных будут доступны зависит от того, какие данные имеются в фиде.

Где и когда может пригодится такая функция? Например, если у нас есть блог и мы хотим в нем, в сайдбаре вывести колонку "Последние статьи сайта". Особо активно эту функцию можно использовать, если вы вдруг захотите создать каталог блогов, фиды которых нужно будет выводить. Также можно использовать эту функцию в каких-либо граберских целях, но это уже кто на что горазд :)

Фид другого блога в сайдбаре

Приведу пример использования fetch_feed(), для того чтобы вывести в сайдбаре колонку с последними записями другого блога (допустим wp-info.ru). Пример "примеряю" на дефолтную тему twentyeleven:

<aside id="meta" class="widget">
	<h3 class="widget-title">Фид wp-info.ru:</h3>
	<?php
	if( function_exists('fetch_feed') ){

		$feed = fetch_feed('http://wp-info.ru/feed'); // УРЛ фида

		$limit = $feed->get_item_quantity(7); // задаем количество статей
		$items = $feed->get_items(0, $limit); // создаем массив элементов фида

	if( $limit == 0 )
		echo 'Фид пустой или недоступен.';
	else
		foreach( $items as $item ){ ?>
			<a href="<?php echo $item->get_permalink(); ?>" title="<?php echo $item->get_date('j F Y @ g:i a'); ?>"><?php echo $item->get_title(); ?></a>
			<p>
				<?php echo substr($item->get_description(), 0, 200); ?>
				<span>[...]</span>
			</p>
	<?php
		}
	}
	?>
</aside>

Этот код я добавил в sidebar.php и получил 7 последних записей этого блога на своем локальном, проверочном блоге.

Вот картинка:

Полный список функций, которые выводят различные данные элемента фида (статьи), подобные $item->get_permalink(), можете посмотреть здесь. Правда там все на англ, но разобраться при необходимости, думаю, можно.