Mehrere RSS-Feeds in WordPress importieren und nach Datum sortieren

Ich habe den folgenden Code gefunden, um Feeds aus mehreren Feeds zu importieren und sie in WordPress anzuzeigen. Aber ich möchte alle kombinierten Feeds nach Datum sortieren und nur 10 anzeigen. Wie kann ich das tun?

Vielen Dank

get_items() as $item) { echo $item->get_title(); } ?> 

Solutions Collecting From Web of "Mehrere RSS-Feeds in WordPress importieren und nach Datum sortieren"

Überprüfung der Argumente

Das Hauptproblem bei Ihrem Versuch besteht darin, dass Sie davon ausgehen, dass die function ein Array von Argumenten übernimmt. Der Punkt ist, dass dies nicht funktioniert. Die Interna von fetch_feed() Link to source zeigt Ihnen, dass es sich einfach um einen Wrapper für die SimplePie class handelt, also müssen Sie einen URl nacheinander eincasting. SimplePie object bekommst du ein komplett gebackenes SimplePie object .

Überarbeiteter Code

Ihr Code sollte also etwa so aussehen:

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

Die Lösung

Die kool Sache mit diesem ist, dass Sie (wie Ihr Code bereits zeigt) dann die classnmethoden verwenden können. Ich bin kein Experte mit SimplePie (noch habe ich diese class sogar verwendet), aber von der Quelle scheint es eine merge_items() Methode zu geben. Vielleicht kannst du diesen hier benutzen:

 $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 ); 

Jetzt nimmt merge_items() vier Argumente an.

  • $urls – ein Array von SimplePie Objekten (deshalb haben wir den Feed zuerst geholt)
  • $start
  • $end
  • $limit

Intern ruft die Methode get_items() – genau dasselbe, was Sie getan haben. Und beide Methoden rufen eine Sortierrückrufmethode auf, die nach Datum sortiert.

Aufgabe erledigt.