自作RSSリーダーでITニュースを公開

本日、本サイトの「ITニュース」コーナーを正式公開した。主要なIT関連サイトの新着記事のサマリーを公開日時の新しい順に並べ替えて表示したものだ。WordPressテンプレートを書いたというより、PHPのプログラム開発をしたという方が近い。自分の読みたい記事をサクッと読むことができて便利だ。よろしければ、お気に入りに追加されたし。

以前、このようなページをBDPRSSというプラグインで作成したことがあるが、このプラグインはすでにサポートが打ち切られ、当然ながらWordPressの公式プラグインとしては登録されていない。公式プラグインのデータベースを探してみたが、結局自分のやりたいことができるものは見つからなかった。そこで、WordPressに用意されているプログラム用の関数を使ってRSSアグリゲータ(RSSリーダー)を開発することにした。今回はその概要を紹介する。

主な仕様は次の通り。

  • 複数のサイトのRSSフィードを取得すること
  • RSSフィードをキャッシュすること(2度目から素早く表示できる)
  • サイト毎に新着記事情報の数を設定できること(デフォルトは5個)
  • 新着記事は公開日時の新しい順に並べ替えること
  • 表示する情報は、タイトル(リンク)、日付、サイト名(リンク)、サマリー
  • サマリーの最大文字数は全角200字とする
  • 200字を超える場合は ‘…’ を表示する
  • サマリーの後ろに、「続きを読む(リンク)」を表示する
  • 日付データの不具合に対処するため、サイトによって公開日時のプラスマイナス時間数を指定できる

現在のところ、RSSフィードを取得しているサイトは次の通り。

  • ITmedea 総合
  • ZDNet Japan 総合
  • CNET Japan 総合
  • The Blog Hearald 翻訳版
  • Engadget 日本版

テンプレート開発の上で肝となるのが、rss.php というライブラリと、fetch_rss という関数だ。これらは MagpieRSS というオープンソースのプログラムライブラリから WordPress に取り込まれたものだ。

また、ページ用のテンプレートに名前を付けておく必要がある。ファイル先頭のPHPソース部分に次のように書く。

/*
Template Name: RSS_IT
*/

これにより、「ITニュース」のページに「RSS_IT」のテンプレートを適用することができるようになる。オリジナルのページ用テンプレートを作成する場合は必要となるので覚えていただければと思う。

テンプレートファイルのソースコードも公開した。

右クリックして、「リンク先を保存」で保存する。ファイル名が rss_page.php.txt となっているので、.txt を削除する。文字コードはUTF-8だ。

バグなどあればお知らせいただきたい。

自作RSSリーダーでITニュースを公開” への17件のコメント

  1. Journey さん
    こんばんは、Wordpressで使えるRSSリーダープラグインを探していまして、Journeyさんのページにたどり着きました。
    以下のローカル環境でWordpressサイトを構築していています。
    WinXP
    XAMPP 1.6.6a
    (Apache 2.2.8)
    (MySQL 5.0.51a)
    (PHP 5.2.5)
    WordPress 2.5.1ja

    主な仕様に書かれているものは、まさに私が探していたものです。
    よかったら、使わせていただけないでしょうか?

  2. 気に入っていただき、ありがとうございます。
    テンプレートファイルを公開しましたので、上のリンクを右クリックして「リンク先を保存」で保存してください。
    文字コードはUTF-8です。

  3. Journeyさん
    素晴らしいプラグイン、ありがとうございます。使わせていただきます。

  4. ピンバック: ITわかり隊 » WordPressにRssReaderを設定する方法

  5. すばらしいものを公開していただきありがとうございます。事後報告ですみませんが、使用及び紹介させていただきました。ご了承いただければ幸いです。よろしくお願いいたします。

  6. ITわかり隊隊長さん
    わざわざご報告いただき、ありがとうございます。
    設置方法を解説していないので苦労されたとのことで、申し訳ありませんでした。現在はサラリーマンの余暇での執筆で、行き届かない面があるかと思います。
    これからもよろしくお願いします。

  7. ピンバック: WordPressにRssReaderを設定する方法 | ITわかり隊

  8. ピンバック: とあるL点の藻屑日記 - 日記リンク集

  9. ピンバック: Web being Web — RSSリーダー

  10. Journey様

    本プログラムを使わせて頂いております。
    非常に使いやすく高機能なソースコードで
    現在こちらを使用したサイト構築を進めておりますが、
    日付表示についてご質問がありコメントさせて頂きました。

    ほぼ配布中のソースコードの状態で、
    日付表示が日本時間から9時間ほどずれて表示されており、
    UTCではなく、GMTの日付になっているかと思うのですが、
    こちらをUTC、日本時間の+9の日付で表示はできますでしょうか?

    かなり前に開発されたソースコードについての
    ご質問になってしまって恐縮ですが、
    宜しければご教授ください。

  11. ご返事が遅くなりました。

    RSSのタイムスタンプがUTCになってしまうサイトについては次のようなワークアラウンドを行っています。
    「’The Blog Herald 翻訳版」の方に、’timeoffset’=>-9 を追記しているのがその箇所です。


    $rsses[] = fetch_rss('http://feeds.japan.cnet.com/cnet/rss');

    $names[] = array('name'=>'Engadget 日本版',

    'url'=>'http://japanese.engadget.com/',

    'max'=>8);

    $rsses[] = fetch_rss('http://feeds.feedburner.com/engadget/japanese');

    $names[] = array('name'=>'The Blog Herald 翻訳版',

    'url'=>'http://jp.blogherald.com/',

    'max'=>8,

    'timeoffset'=>-9);

    もし、このような書き方をしてうまく動作しないようでしたら、テンプレートファイルをお送りしますので、
    お知らせください。

  12. journey様

    お返事頂き誠にありがとうございます。

    幾つかFEEDを登録している中で、

    >timeoffset’=>-9

    上記の記述が漏れていたFEEDがいくつかあり、
    こちらを追記することでUTC+9の時間で表示がされるようになりました。

    また、ご提示頂いた記述で試したところ、
    こちらも問題なく日付・時間表示がされるようになりました。
    ご丁寧なサポート、誠にありがとうございます。

    そして非常に素晴らしいプラグインをご提供頂き
    大変重宝しております。
    重ねて御礼申し上げます。

  13. ピンバック: WordPressにRssReaderを設定する方法 | ITわかり隊

  14. ピンバック: wordpress rss read 自作RSSリーダーでITニュースを公開 h… « qlo'z blog

  15. はじめまして!
    とてもすばらしいテンプレートの公開、ありがとうございます。
    まだテストサイトですが、きっちり仕上げて使わせて頂きたいと思います。

    ありがとうございます!

  16. 見つけていただき、ありがとうございます。
    公開されているプラグインの中に気に入るものがなかったので、自作しました。

コメントを残す