web-dev-qa-db-fra.com

Combinaison de plusieurs flux RSS à l'aide de fetch_feed

J'utilise fetch_feed pour afficher un flux RSS sur un thème sur lequel je travaille.

Je pense que la documentation implique que vous pouvez combiner plusieurs flux, n'importe qui peut le confirmer, idéalement avec un exemple.

Merci d'avance! George

2
George Wiscombe

Vous pouvez techniquement transmettre plusieurs URL de flux à fetch_feed () sous forme de tableau, qui les aura toutes en même temps. Mais le retour est un gâchis total et je ne pouvais pas trouver personnellement comment l’analyser.

Si personne d'autre ne sait comment faire cela avec fetch_feed (), je peux proposer une solution utilisant la classe SimplePie (que fetch_feed utilise de toute façon). La classe SimplePie dispose de méthodes d’aide pour l’analyse du retour et facilite grandement les choses.

Essayez quelque chose comme:

// 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/>';

}

Les méthodes SimplePie supplémentaires incluent get_permalink () et get_description ().

Le seul inconvénient de cette approche est que SimplePie est progressivement éliminé de WordPress au profit d’une autre classe.

UPDATE

Comme @Rarst l'a souligné dans les commentaires, vous n'avez pas besoin d'accéder directement à SimplePie. Vous pouvez utiliser ses méthodes sur l'objet renvoyé par fetch_feed (). Donc, la réponse est beaucoup plus simple que je ne le pensais:

$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