web-dev-qa-db-fra.com

Importer plusieurs flux RSS dans Wordpress et les trier par date

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();
}
?>
2
Damchey Lhendup

Vérification des arguments

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.

Code retravaillé

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();
    }
}

La solution

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.

1
kaiser