Für die Anzeige von RSS Feeds gibt es für WordPress unzählige Plugins. Allerdings stoßen alle Plugins an Ihre Grenze, wenn das anzuzeigende Bild eines externen RSS Feeds nicht in einem Tag, sondern im Content des einzubindenden Feeds hinterlegt ist. Dieser Artikel zeigt einen Weg zur Selektion dieser Content-Bilder.
RSS-Plugins
Sobald die gewünschten Bilder im Content eines RSS Feeds hinterlegt sind, kann es bei vielen RSS Plugins zu unüberwindbaren Hürden kommen. Ein Beispiel dafür könnte wie folgt aussehen:
<content type="html"> ... <img border="0" alt="Text" src="http://www.beispiel.de/bild.png" /> ... </content>
In dem gezeigten Beispiel kann zwar oft das Content-Tag von den Plugins ausgelesen werden, jedoch nicht die Bilder im Content des Content-Tags.
Das Auslesen des externen RSS Feed
Um nun die Bilder aus dem Content auszulesen, benötigen wir im ersten Schritt einen Zugriff auf die Daten des gewünschten RSS Feed. Dazu bedienen wir uns der WordPress-Funktion
fetch_feed()
welche wiederum auf die Funktionen von SimplePie zurückgreif. In der WordPress Dokumentation zur Funktion finden Sie auch einen Beispielcode zur Verwendung von fetch_feed(). Im folgenden werde ich diesen Beispielcode als Grundlage verwenden und um eigenen Code ergänzen.
Das Parsen der externen Bilder
Um die einzelnen Elemente eines RSS Feeds anzuzeigen, wird im obig erwähnten Beispiel folgender Code verwendet:
<?php foreach ( $rss_items as $item ) : ?> <li> <a href='<?php echo esc_url( $item->get_permalink() ); ?>' title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'> <?php echo esc_html( $item->get_title() ); ?></a> </li>
Um nun die Bilder anzuzeigen, welche im Content des RSS-Feeds versteckt sind, können wir die obige Schleife um folgenden Code erweitern:
<?php //Dekodierung von entwerteten Sonderzeichen $content = html_entity_decode($item->get_content(), ENT_QUOTES, 'UTF-8'); //Dies ist das Suchmuster, nach welchem wir im Content suchen $pattern = "/<img[^>]+>/i"; //Starten des eigentlichen Suchvorgangs preg_match($pattern, $content, $matches); //Speichert das erste gefunden <img>-Tag in einer Variable $img_1 = $matches[0]; //Ausgabe des Bildes echo $img_1; ?>
Mithilfe dieses Codes wird der komplette Inhalt des Content-Tags nach img-Tags durchsucht. Anschließend wird das erste gefundene Bild in einer Variablen gespeichert und ausgegeben.
Fazit
Die Anzeige von Bilder, welche im Content des eigentlichen RSS-Feeds hinterlegt sind, ist mithilfe der aufgezeigten Code-Zeilen überhaupt kein Problem. Allerdings müssen Sie den Code in vielen Fällen noch an Ihre speziellen Bedürfnisse anpassen. Dies könnte zum Beispiel der Fall sein, wenn Sie nicht immer das erste Bild anzeigen wollen sondern vielleicht das Letzte.
Getestet unter WordPress 3.5(.1)
1 Kommentar » Schreibe einen Kommentar