J'ai trouvé le code suivant pour importer des flux à partir de plusieurs flux et les afficher dans wordpress. Mais je veux trier tous les flux combinés par date et en afficher seulement 10. Comment puis-je le faire?
Merci
<?php
$feed = fetch_feed(array('http://www.site1.com/feed/', 'http://www.site2.com/feed/'));
foreach($feed->get_items() as $item) {
echo $item->get_title();
}
?>
Le principal problème de votre tentative est que vous supposez que la fonction prend un tableau d’arguments. Le fait est que cela ne fonctionne pas. Les composants internes de fetch_feed()
Lien vers la source vous montre qu'il s'agit simplement d'un wrapper pour la classe SimplePie
, de sorte que vous devez ajouter une URL après l'autre. En retour, vous obtenez un SimplePie object
entièrement cuit.
Votre code devrait donc ressembler à ceci:
$feeds[] = fetch_feed( 'http://site-a.example.com/feed/' );
$feeds[] = fetch_feed( 'http://site-b.example.com/feed/' );
foreach( $feeds as $feed )
{
foreach ( $feed->get_items() as $item )
{
echo $item->get_title();
}
}
Le problème avec kool est que vous pouvez (comme votre code le montre déjà) utiliser ensuite les méthodes de classes. Je ne suis pas un expert avec SimplePie
(ni même ai-je utilisé cette classe), mais en regardant la source, il semble y avoir une méthode merge_items()
. Peut-être que vous pouvez utiliser celui-ci:
$simple_pie = new SimplePie;
$feeds[] = fetch_feed( 'http://site-a.example.com/feed/' );
$feeds[] = fetch_feed( 'http://site-b.example.com/feed/' );
$feed_posts = $simple_pie->merge_items( $feeds, 0, 10, 10 );
Maintenant, merge_items()
prend quatre arguments.
$urls
- un tableau d'objets SimplePie
(c'est pourquoi nous avons extrait le flux en premier lieu)$start
$end
$limit
En interne, la méthode appelle get_items()
- exactement la même chose que vous avez faite. Et les deux méthodes appellent une méthode de rappel de tri qui trie par date.
Tâche accomplie.