RSSサービスは無料で各種提供されていますが、他社に依存することなく自前で適当なものが用意できればいいな、と思い、WordPressのプラグインを探していました。しかし、プラグインに頼らなくてもよいのだ、ということが分かりました。
自作RSSリーダーでITニュースを公開(「WordPressな日々」より)
手順は、
- RSSページ用の「カスタムテンプレート」を作成する。
 - カスタムテンプレート内に、RSSを取得したいサイトの名称(name)・サイトURL(url)・取得記事数(max)・フィードのURL(fetch_rss)を書き込む。
 - ページの新規作成で「My RSS」のようなタイトルでページを作り、そのページのテンプレートとして1.で作成したオリジナルテンプレートを適用する。記事本文は空欄でよい。
 
試しにいくつかのサイトを登録してみました。
ページを開いた時にだけRSSを見に行くので、少し表示が重いかな。
あとフィードを取得できなかったときにWarningが出てるので、それを出ないようにしないと・・・。
サイトを登録した時には「船越優蔵の俺が言う象!!」っていうサイトタイトルだったのに、U-13監督になったら「Yuzo Funakoshi’s Official Blog 『START』」という立派なお名前に変更になっておりました。笑。
後で直しておかなきゃ。
カスタムテンプレートの作り方は、以前にも書きました。
私が今回作ったテンプレートは、およそこんな感じです。下記を参照下さい。
自分が使っているテーマの「page.php」を参考にしながら、スタイル設定を行なってみてください。
[php]?
MY RSS
管理人のお気に入りサイトの更新状況です。
// フィードのURL
$rsses[] = fetch_rss(‘http://blog.livedoor.jp/manon_blog/index.rdf’);
			// 以下必要な数だけ繰り返し
			//$names[] = array(‘name’=>”, ‘url’=>”, ‘max’=>);
			//$rsses[] = fetch_rss(”);
			// 表示する情報を配列に整理して格納
			$i = 0;
			$items = array();
			foreach ($rsses as $rss) {
				$sitename = $names[$i][‘name’];
				$siteurl  = $names[$i][‘url’];
				if ($names[$i][‘max’] == ”) {
					$maxitems = $d_maxitems;
				} else {
					$maxitems = $names[$i][‘max’];
				}
				//print “$sitename, $maxitems; “;
				$timeoffset = 0;
				if ($names[$i][‘timeoffset’] != NULL) {
					$timeoffset = $names[$i][‘timeoffset’];
				}
				$arr = array_slice($rss->items, 0, $maxitems);
				//$arr = array_slice($rss->items, 0);
				foreach ($arr as $ar) {
					// 日付データの取得
					if ($ar[‘dc’][‘date’] != ”) {
						$date = $ar[‘dc’][‘date’];
					}
					elseif ($ar[pubdate] != ”) {
						$date = $ar[pubdate];
					}
					elseif ($ar[issued] != ”) {
						$date = $ar[issued];
					}
					else {
						$date = ”;
					}
					// 重複記事のスキップ
					foreach ($items as $item) {
						if ($item[‘title’] == $ar[‘title’]) { continue 2; }
					}
					// 配列に整形
					$items[] = array(‘date’    => strtotime($date) + $timeoffset*3600,
									 ‘sitename’ => $sitename,
									 ‘siteurl’ => $siteurl,
									 ‘title’   => $ar[‘title’],
									 ‘link’    => $ar[‘link’],
									 ‘summary’ => $ar[‘summary’]
									 );
				}
				$i++;
			}
			// タイムスタンプで降順に並べ替え
			rsort($items);
			?>
アイテムがありません。
‘;
			else
			// アイテムがあるとき
			$i = 0;
			foreach ( $items as $item ) :
			$i++;
			if ($i > $total_maxitems) { break; }
			?>
			‘ title=’‘ target=”_blank”>
			 $maxlen) {
					$tail = ” …”;
				}
				echo mb_substr($summary, 0, $maxlen) . $tail;
			?>
			‘ title=’‘ target=”_blank”> » 続きを読む
			
[/php]







