WordPress Post-Thumbnails aus RSS-Feed auslesen. preg_match und Regular Expressions
Ab und zu möchte man den RSS-Feed seines WordPress Blogs auf einer anderen Seite einbinden, um dort beispielsweise die neuesten fünf Beiträge zu bewerben. Der RSS-Feed ist schnell ausgelesen, ein Problem sind häufig die Post-Thumbnails der Artikel.
Die Artikelbilder werden von WordPress nicht in den Feed übertragen. Um die Post-Thumbnails dennoch im Feed anzuzeigen, wird häufig in der functions.php
ein Snippet eingefügt das die Bilder in den Inhaltsbereich des Feeds lädt. Da sich die Bilder dann allerdings zusammen mit dem Text und anderen Bildern in einem Feed-Element befinden, ist schwierig sie gezielt auszulesen.
Element mit PHP preg_match identifizieren
Das Artikelbild wird im Feed als img
direkt vor dem eigentlichen Inhalt des Beitrags eingebunden. Semantisch betrachtet befindet es sich aber ebenso wie der Beitrag selbst innerhalb des Elements „<description>
„. Mit preg_match
lasst sich das Artikelbild über die Dateiendung identifizieren und in einem Array speichern. Anschließend zeigen wir immer nur das erste Bild des Array.
Alles was ihr benötigt, ist eine Variabel bzw. ein Array in der ihr den Feed-Inhalt (description
) verfügbar habt. Sollte das nicht der Fall sein, schaut euch bitte noch einmal diesen Artikel an: RSS-Feed von WordPress auslesen.
Im folgenden Beispiel-Code wird $quelle
nach Bildern durchsucht, und diese der Reihe nach in $ziel
abgespeichert.
preg_match("/src=[\"\']?([^\"\']?.*\.(png|jpg|gif))[\"\']?/i", $quelle, $ziel); // Bilder werden aus $quelle ausgelesen und in $ziel gespeichert.
Anschließend könnt ihr mit folgendem Code das erste Elemente des Array auslesen und in einem img
-Tag einbinden.
height="100" width="100" alt=""/>
Mit diesem „regulären Ausdruck“ ist es möglich die Post-Thumbnails von WordPress aus dem Feed zu extrahieren und in Kombination mit anderen ausgelesenen Feed-Elementen auf einer externen Website darzustellen.
Danke Jonas!
Szenario:
Eine Website, auf der in den Usereinstellungen oder über Custom Fields, User ihre Feed-URL oder Website-URL angeben können. Auf einer Seite sollen daraufhin alle aktuellen Artikel, welche durch den Feed generiert werden, ähnlich wie aus Facebook und Google+ bekannt, in einer Timeline auf einer Seite erscheinen.
Besucht also ein Gast/User z.B. die URL meinesite.de/timeline, sieht dieser alle aktuellen Artikel der Websites von den Usern, welche sich mit Ihrer Feed-URL auf der Website eingetragen haben.
Weißt du was ich meine? Jonas, hast du da Ansätze?
Lieben Gruß,
Jonathan
PS: Eine Checkbox für „Benachrichtige mich über nachfolgende Kommentare per E-Mail.“ Wäre praktisch. Oft vergesse ich in meinem Informationsdurst, dass ich Kommentare hier- oder da geschrieben habe.
Hallo,
mit dem plugin RSS image feed werden dem Feed Bilder zugefügt. Ob die jetzt mit MagpieRSS oder mit dem RSS Widget dargestellt werden können, weiß ich leider nicht.
Grüße,
Stefan
Hey,
Schöner Artikel, aber bei mir ist das Bild nicht in Desciption drin. Ich benutze MagpieRSS und kann das Bild nicht Auslesen.
Hat jemand eine Ahnung?
Gruß
Robert