外部RSSを表示する① 『wordpress』


fireforxやその他のツールでいろいろなサイトのRSSを受信してみていますが、wordpressに外部RSSを表示できないか調べてみました。
そしたら、PHPで外部RSSを取得、解析、キャッシュまでやってくれる「MagpieRSS」というライブラリが「wordpress」に標準で組み込まれていることがわかりました。

ファイルは「wp-includes」フォルダ内の「rss.php」というファイル名です。
このRSSライブラリを使用する為には、このファイルを読み込む必要があります。

include_once(ABSPATH . WPINC . '/rss.php');

定数「ABSPATH 」は「wordpress」では次のように定義されています。
【wp-config.php】
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

dirname(__FILE__) はphpでincludeするファイルを読み込む場合に、どの階層からでもきちんとパスが通るように補正するよく利用される方法ですね。

定数「WPINC 」は「wordpress」では次のように定義されています。
【wp-settings.php】
define('WPINC', 'wp-includes');

これはただ、WPINC = 'wp-includes' ですね。フォルダ指定するときに「wp-includes」と書かないでWPINCと書くことで、これからバージョンアップしたとき、もし「wp-includes」というフォルダ名が変更しても、WPINC = ●●● の部分だけ変更すれば、テンプレートなどは修正しなくてもよくなります。
【wp-settings.php】は、WPのフォルダ構成をセッティングしているので、ここをアレンジすれば好きなフォルダ構成にできそうです。
プログラムがどう動いているかはともかく、「wp-includes」内にあるファイルを読むときは、

include_once(ABSPATH . WPINC . '/ファイル名');

と覚えておけばいいでしょ。

「MagpieRSS」が使える状態になったので利用します。外部RSSを取り込む書き方は簡単です。
方法は3つあります。

①$rss = fetch_rss(外部RSSのURL);
②$rss = get_rss(外部RSSのURL);
③$rss = wp_rss(外部RSSのURL);

これで $rss にRSSデータが取り込まれました。
①はデータを配列で取り込みます。
②は<li>リスト形式にして表示します。
③は②を<ul></ul>も表示されます。

試しにwardpressサイトが配信しているRSSを取得してみます。
今回は③のパターンです。

<?php
include_once(ABSPATH . WPINC . '/rss.php');
$rss = wp_rss('http://wordpress.org/development/feed/');
?>

無事表示されました。
なぜか文字化けしている箇所があるので調べてみます。


「外部RSSを表示する① 『wordpress』」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です