web-dev-qa-db-ja.com

Fetch_feedを使って複数のRSSフィードを組み合わせる

私が取り組んでいるテーマのRSSフィードを表示するためにfetch_feedを使用しています。

私はドキュメンテーションはあなたが複数のフィードを組み合わせることができることを意味すると思います、誰でもこれを確認することができます、理想的には例で。

前もって感謝します!ジョージ

2
George Wiscombe

技術的には、複数のフィードURLを配列としてfetch_feed()に渡すことができます。それらを一度に取得します。しかし、返品は非常に混乱しており、私は個人的にそれを解析する方法を見つけ出すことができませんでした。

Fetch_feed()を使ってこれを行う方法が他に誰にもわからない場合は、SimplePieクラスを使用したソリューションを提供できます(fetch_feedでは実際に使用されます)。 SimplePieクラスはリターンを解析するためのヘルパーメソッドをいくつか持っています、そしてそれらは事をかなり簡単にします。

次のようにしてください。

// Contains the SimplePie class
require_once (ABSPATH . WPINC . '/class-feed.php');

// New class instance
$feed = new SimplePie();

// You feed URLs
$feed->set_feed_url(array('http://rss.cnn.com/rss/cnn_topstories.rss', 'http://cuteoverload.com/feed/'));

// Do it!
$feed->init();
$feed->handle_content_type();

// Loop the results
foreach($feed->get_items() as $item) {

    echo $item->get_title();
    echo '<hr/>';

}

その他のSimplePieメソッドには、get_permalink()およびget_description()があります。

このアプローチの唯一の欠点は、SimplePieがWordPressから廃止されて他のクラスが廃止されることです。これはうまくいきません。

UPDATE

@Rarstがコメントで指摘したように、SimplePieに直接アクセスする必要はありません。 fetch_feed()が返すオブジェクトに対してそのメソッドを使うことができます。だから答えは私が思っていたよりもずっと簡単です。

$feed = fetch_feed(array('http://rss.cnn.com/rss/cnn_topstories.rss', 'http://cuteoverload.com/feed/'));

// Loop the results
foreach($feed->get_items() as $item) {

    echo $item->get_title();
    echo '<hr/>';

}
4
MathSmath