さて、PHP5になってとっても便利になったSimpleXMLを使ってみようと思います。
XMLということでRSSを取得するスクリプトを覚え書き
ポイントはRSSで使用されているdc:dateをNamespaces(名前空間)で
取得しなければならない
↓のdc:dateの部分
<dc:date>2009-03-02T15:00:00 +0900</dc:date>
ので下記を参考にさせていただきました。
Stuart Herbert’s PHP Blog
限りなく簡単に書いたコードは以下
$feed = simplexml_load_file("RSSへのパス");
foreach ($feed->item as $item) {
//タイトルを表示
echo $item->title;
//リンクを表示
echo $item->link;
//時刻
$dc = $item->children('http://purl.org/dc/elements/1.1/');
echo $dc->date;
//本文
echo $item->description;
}
これだと[CDATA]が扱えないので
改良版はのちほど。。
続き→
SimpleXMLでCDATAを扱う
普段iPhoneの「NetNewsWire iPhone版」でRSS購読をしているのですが、
購読の管理元のNewsGator Onlineのサービスが停止するという事で
NewsGator OnlineからGoogleリーダーにフィードデータを引き継ぐ事にしました。
以下に手順を紹介します。
NewsGator OnlineからOPMLをエクスポート
1、NewsGatorにログイン後メニューバーのSettingをクリック
2、タブのEdit Locationsをクリック
3、NewsGator Web Edition欄のOPML (public)をクリック
4、Expose OPML to all users (clearing this option will make the OPML accessible only to you)にチェックを入れて[save changes]ボタンを押す
5、再度NewsGator Web Edition欄のOPML (public)をクリック
6、OPML URL: http://services.newsgator.com/ngws/svc/opml.aspx?uid=xxxxxxxxxxxのリンク先のファイルをローカルに保存
Google リーダーにOPML(XML)ファイルをインポート
1、Googleリーダーにアクセス
左下の登録フィードの管理 »をクリック
2、インポート/エクスポートのタブをクリック
3、OPML ファイルを選択で先程のファイルを選択し、アップロード
4、で、完了!!
これで安心です。
フィードが全部無くなるかと思った(笑)
以下をphpで保存。
header("Content-type: application/xml");
$url = "http://kidokorock.com/feed/atom";
readfile($url);
上記ファイルをサーバーにアップし、
リンクを張る事で読み込み可能。
WordPressでカテゴリごとにRSSを配信したい場合
静的にリンクを張りたい場合
設定>パーマリンクの設定>で
カスタム構造を選択し
/%category%/%postname%.html
と設定した場合
カテゴリ名/feed
でそのカテゴリのフィードが配信出来る。
例:http://kidokorock.com/wordpress-tips/feed
ついでに
下記でフィードをカテゴリリスト表示(テキストリンク)
<ul>
<php wp_list_cats('sort_column=name&optioncount=1&exclude=1&afeed=RSS'); ?>
</ul>
下記でフィードをカテゴリリスト表示(画像リンク)
<ul>
<?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=1&exclude=1&feed_image=URL.jpg"); ?>
</ul>