WordPress 3.0 以降で RSS を一覧にする方法

以前 RSS を WordPress で一覧する方法を書きましたが、WordPress 3.0 以降は以前の記事の方法は推奨されていません。同梱されている SimplePie で今後も安心して使える WordPress 3.0 以降で RSS を表示するコードを用意しましたのでお使いください。

使い方

以下のように wbRssList() の第一引数に RSS の URL を入れることで一覧にすることができます。テーマの好きな所に貼り付けましょう。

1
<?php wbRssList('http://weble.org/feed'); ?>

また、複数の RSS の URL を配列で加えることで混ぜて一覧にすることができます。

1
2
3
4
5
6
7
<?php
wbRssList(Array(
    'http://example.net/feed',
    'http://example.com/feed',
    'http://example.org/feed'
);
?>

一覧の件数はデフォルトでは5件になっていますが、第二引数で変更可能です。以下は10件表示する場合の方法です。

1
<?php wbRssList('http://weble.org/feed', 10); ?>

組み込み方

以下のコードを functions.php に貼りつけると以上の RSS 一覧を使えるようになります。出力する HTML 部分は場合によって変更してみてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function wbRssList($url, $num = 5)
{
    include_once(ABSPATH . WPINC . '/class-simplepie.php');
    $feed = new SimplePie;
    $feed->set_feed_url($url);
    $feed->enable_cache(false);
    $feed->init();
    $items = $feed->get_items(0, $num);
    $lists = Array();
    echo '<ul>';
    foreach($items as $item) {
        $list = Array(
            'date' => $item->get_date('Y-m-d H:i:s'),
            'title' => $item->get_title(),
            'link' => $item->get_link(),
        );
        echo sprintf(
            '<li><span class="date">%s</span><a href="%s">%s</a></li>',
            $list['date'], $list['link'], $list['title']
        );
    }
    echo '</ul>';
}

以下の記事を参考にさせて頂きました。

追記: 日付がずれるバグの修正

RSSの各記事の日付をPHPのタイムゾーン設定に基づいて処理していますが、WordPressではwp-settings.phpに以下のような記述があり、内部的にはUTCで処理しています。

以下の記事のプラグインを使うことで修正することができます。内部的には SimplePie の代替クラスを作って先に実行させることで対応しています。WordPress のコアを弄ることなくバグに対応できますので是非使わせて頂きましょう。

firegoby » Fixed SimplePIe – RSSウィジェットの日付の不具合を修正する

コメント

コメントは受け付けていません。