2009年09月24日

複数のRSSフィードをまとめて新着順に表示するPHPコード

複数のお店でそれぞれアメブロなど無料ブログをつけてもらっているのですが、それらのRSSをまとめて新着順に表示させたいと思ってました。プラグインを探してたけど、バッチリなのを見つけました

まず、コードは以下の通り
<?php
include_once(ABSPATH . WPINC . '/rss.php');

//フィードのURI
$rss_arr = array(
'http://log.maaguu.com/feed/',
'http://wp.maaguu.com/feed/',
'http://pp.maaguu.com/feed/'
);

//表示件数
$num = 10;

foreach($rss_arr as $uri)
{
$rss = fetch_rss($uri);

$title = $rss->channel['title'];
$link = $rss->channel['link'];

foreach($rss->items as $item)
{
$item_title = $item['title'];
$item_link = $item['link'];
$item_date = $item['pubdate'];
$out_item_date = date('Y年n月j日', strtotime($item_date));

$out_item = '<dt>
<a href="' . $item_link . '">' . $item_title . '</a>
</dt>
<dd style="font-size:77%;">
<a href="' . $link . '">' . $title . '</a>
</dd>
<dd style="font-size:77%;">' . $out_item_date . '</dd>';

$unix_time = date('U', strtotime($item_date));
$item_arr[$unix_time] = $out_item;
}
}

//ソート
krsort($item_arr);

//出力
echo '<h2>新着' . $num . '件</h2>';

echo '<dl>';

for(reset($item_arr); $key = key($item_arr); next($item_arr))
{
echo $item_arr[$key];

++$count;

if($count === $num)
{
break;
}
}

echo '</dl>';
?>


$rss_arr = array(
'http://log.maaguu.com/feed/',
'http://wp.maaguu.com/feed/',
'http://pp.maaguu.com/feed/'
);

のシングルクォーテーションの間にフィードのURIを入れる。入れる。入れる。20個ぐらい入れたった。 で、表示部分を整えて、
ここと
$out_item = '<dt>
<a href="' . $item_link . '">' . $item_title . '</a>
</dt>
<dd style="font-size:77%;">
<a href="' . $link . '">' . $title . '</a>
</dd>
<dd style="font-size:77%;">' . $out_item_date . '</dd>';
ここで
echo '<h2>新着' . $num . '件</h2>';

echo '<dl>';

適当にスタイルを適用。

拍子抜けするぐらいあっさりできました。作者さん、有難うございました。




kozaiya at 11:28│Comments(0)TrackBack(0)この記事をクリップ!RSS関連 | PHP

トラックバックURL

コメントする

名前
URL
 
  絵文字