WEBOPIXEL

WordPressの入っていないサイトにRSSを取得してブログの情報を載せる

Posted: 2011.11.16 / Category: WordPress 

サイト本体とブログを別々のドメインで運営しているけど、ブログの最新情報をサイトのトップに載せたいというが時々にあったりします。
そこでPHPでRSSを取得してWordpressの入っていないサイトでもブログの最新情報を載せる方法をご紹介します。

Sponsored Link

FeedのURLの確認

最初にRSSを配信しているFeedの確認をしてみます。
例えば「http://www.example.com/」にWordpressをインストールしたならURLは下記になります。

http://www.example.com/feed

SimpleXMLを使用した場合

記事のタイトル、リンク、抜粋などの基本的な情報なら、標準機能の「SimpleXML」を使用するだけなので簡単です。
適当なphpファイルに以下のように記述してください。

index.php

	$feed = simplexml_load_file('http://www.example.com/feed','SimpleXMLElement',LIBXML_NOCDATA);
	<?php foreach($feed->channel->item as $item): ?>
	<div>
		<h3><a href="<?php echo $item->link; ?>">
		<?php echo $item->title; ?></a></h3>
		<p class="date">
			<?php echo date('Y年m月d日',strtotime($item->pubDate)); ?>
		</p>
		<p><?php echo $item->description; ?></p>
	</div>
	<?php endforeach; ?>
	

simplexml_load_fileは通常ファイル名を指定するだけですが抜粋(description)のように「CDATA」で囲まれている場合は、引数に「’SimpleXMLElement’,LIBXML_NOCDATA」といれます。

SimpleXMLでCDATAを扱う | [k]id

SimplePieを使用した場合

コンテンツは「content:encoded」となっているのでSimpleXMLでは解析できないようです。(出来る方法があるかもしれませんが、、)
そこで「SimplePie」というライブラリを使用してコンテンツの内容も表示してみます。

下記ページからライブラリをダウンロードします。

SimplePie

解凍したフォルダの中に色々とファイルが入っていますが、使用するのは「simplepie.inc」だけです。
このファイルを先ほどのphpファイルと同階層に配置しましょう。
キャッシュも保存することができるので「cache」というフォルダも作成しておきます。

index.php

	<?php
	//SimplePieの設定
	include('simplepie.inc');
	$feed = new SimplePie;
	$feed->set_cache_location('cache');    // キャッシュディレクトリの指定
	$feed->set_feed_url('http://www.example.com/feed');    // RSSのURL
	$feed->init();
	$feedItems=$feed->get_items(0,5);    // 5件取得
	//取得した内容を表示
	foreach($feedItems as $item):
	$date = $item->get_date('Y年m月d日');    // 各記事の日付
	$title = $item->get_title();    // 各記事のタイトル
	$link = $item->get_link();    // 各記事のURL
	$content = $item->get_content();	//抜粋
	?>
	<div>
		<h3><a href="<?php echo $link ?>"><?php echo $title ?></a></h3>
		<p class="date"><?php echo $date; ?></p>
		<div><?php echo $content; ?></div>
	</div>
	<?php endforeach; ?>
	
WordPress Note – SimplePie : RSSやAtomフィードをパースするクラスライブラリ