SimplePie : RSSやAtomフィードをパースするクラスライブラリ
他サイトの「RSS」や「ATOM」を読み込んで、自分のサイトに表示させたい場合に使うライブラリがあります。
以前は「MagpieRSS」にお世話になっていたのですが、WordPress を 2.7 から 2.8 にアップグレードしたとたん、ぱったりと表示しなくなってしまいました…。
(WordPress で作ったサイトの新着記事を、MagpieRSS を使って WordPress でない別のサイトに表示させていました)
どうやって修正してよいかもわからないので、とりあえず検索すると、「MagpieRSS」よりエラーも少なく使いやすい「SimplePie」というライブラリがあるとか。「ほんとうにシンプルだったらいいのに〜」と思いながら、祈る気持ちでトライしてみました。
- SimplePie
-
RSS や Atom フィードをパースするクラスライブラリ。
配布元 : SimplePie(Ver. 1.2)
正直申しまして、いろんなサイトにサンプルが書かれていましたので、同じようにしてみるもののまったく読み込めず…。エラーばかり…。
(Fatal error: Call to undefined method SimplePie…… うんぬんのエラーが出ました)
心が折れそうになりましたが、根気よく検索しますと、以下のような記事に遭遇!
詳しいことはわかりませんが、どうやら SimplePie がバージョンアップの際に仕様が変わったそうなのです!
「なるほど、そうだったのか〜!」とこちらのサンプルを拝借したところ、あっさりフィードできるようになりました。
お〜、ありがたや〜、ありがたや〜!!
使い方
配布元より、SimplePie(Ver. 1.2)をダウンロードします。(simplepie_1.2.zip)
そして、新着記事を表示したい側のサイトのサーバー内へアップロードします。
また、「cache」というキャッシュ用のフォルダも作成します。
(この例では、トップページと同じ階層に置きました)解凍すると「simplepie_1.2」というフォルダが展開され、中にはたくさんのファイルがありますが、「simplepie.inc」だけを使用します。
表示させたい箇所に、以下のようなソースコードを挿入します。以下のサンプルは、複数の人たちで執筆中のブログの最新記事を表示したときに使ったものです。
(「タイトル」「記事のURL」「日付」「投稿者名」の4つの要素を取得しています)
<ul class="blog-new">
<?php
include('simplepie.inc'); // simplepie.inc を読み込む
$feed=new SimplePie; // インスタンス生成
$feed->set_cache_location('cache'); // Cache ディレクトリ
$feed->set_feed_url('http://www.********.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
$author = $item->get_author()->get_name(); // 各記事の投稿者名
echo '<li>';
echo "<a href='$link'>$title</a>";
echo '<span>';
echo "$author";
echo 'さん';
echo "$date";
echo '</span>';
echo '</li>';
}
?>
</ul>
注意点
基本的なことですが、PHPを使用していますので、表示したいページの拡張子は「.php」としないと動きません。
ひとくちメモ
SimplePie を WordPress で使いたい時は、WordPress 用プラグイン「SimplePie Plugin for WordPress」というのもあるようです。
そちらでは、もっと簡単に使えるのかも知れませんね。
(2009.10.21 「SimplePie Plugin for WordPress」の記事 も投稿しました)
でも、WordPress 以外のサイトでも使えるこれを一つ知っておくと、とっても便利そう。
WordPress とは話題がはずれてしまいましたが、私のように「MagpieRSS」で失敗した人などにはオススメです。
PHP7対応について(2017年6月3日追記)
このページで紹介していますバージョン1.2では、PHP7上ではエラーが出ます。
PHP7対応については、バージョン1.5で確認できました。以下のページをご覧ください。
RSSフィードを検索していましたら、こちらのページにたどり着きました。
ソースコードを参考に設置に成功しました。助かりました。
2つのサイトのRSSを表示したい時のphpコードがどうもわかりません。
色々と調べてみたのですが、うまくいきません。
もし宜しかったら、公開していただけませんでしょうか?
2つのサイトのRSSを表示したい時は、
フィードしたいRSSのURLの箇所を
$feed->set_feed_url(array(
'http://www.********.com/feed/', 'http://www.********.com/feed/'
));
とすれば、表示できると思いますよ。
試してみてください。