WordPressの関数を使ってRSSリストを作る

RSSサービスは無料で各種提供されていますが、他社に依存することなく自前で適当なものが用意できればいいな、と思い、WordPressのプラグインを探していました。しかし、プラグインに頼らなくてもよいのだ、ということが分かりました。

自作RSSリーダーでITニュースを公開(「WordPressな日々」より)

手順は、

  1. RSSページ用の「カスタムテンプレート」を作成する。
  2. カスタムテンプレート内に、RSSを取得したいサイトの名称(name)・サイトURL(url)・取得記事数(max)・フィードのURL(fetch_rss)を書き込む。
  3. ページの新規作成で「My RSS」のようなタイトルでページを作り、そのページのテンプレートとして1.で作成したオリジナルテンプレートを適用する。記事本文は空欄でよい。

試しにいくつかのサイトを登録してみました。
ページを開いた時にだけRSSを見に行くので、少し表示が重いかな。
あとフィードを取得できなかったときにWarningが出てるので、それを出ないようにしないと・・・。

サイトを登録した時には「船越優蔵の俺が言う象!!」っていうサイトタイトルだったのに、U-13監督になったら「Yuzo Funakoshi’s Official Blog 『START』」という立派なお名前に変更になっておりました。笑。
後で直しておかなきゃ。

カスタムテンプレートの作り方は、以前にも書きました
私が今回作ったテンプレートは、およそこんな感じです。下記を参照下さい。
自分が使っているテーマの「page.php」を参考にしながら、スタイル設定を行なってみてください。

[php]?

MY RSS

管理人のお気に入りサイトの更新状況です。

‘Man on!’, ‘url’=>’http://blog.livedoor.jp/manon_blog/’, ‘max’=>5);
// フィードの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]



  •  

    ブログパーツの貼り付け方はこちらへ
  • 月別アーカイブ

  • あいさつ掲示板

  • メタ情報