XML-Daten mit WordPress anzeigen

Komische Überschrift? Finde ich auch. Aber „XML-Daten mit WordPress anzeigen“ ist nur ein Teil des Longtail, mit dem Leute hier von den Suchmaschinen auf mein Blog losgelassen werden. Daran ist ja erst mal nichts auszusetzen. Ganz im Gegenteil! Problematisch wird es nur, wenn ich in etwa verstehe um was es geht und dann sehe, dass Code von steinzeitlichen Artikeln aufgegriffen wird, der nicht mehr dem aktuellen Stand der Dinge entspricht. Und weil bei mir gerade das Gegenstück zu einer Schreibblockade ausgebrochen ist, will ich da mal ein paar Informationen hinterher schicken.

Der Artikel wurde am 22.05.2011 veröffentlicht und existiert hier nur noch als Referenz für die Kommentare. Danke für den Besuch und bitte nicht das Lesen meiner aktuelleren Artikel vergessen!

WordPress bietet speziell in diesem Fall sicher viele Möglichkeiten, wo man ansetzen könnte. Bevor man loslegt, sollte erst einmal klar sein, wie man die Daten (ich gehe mal eben davon aus, dass es sich um externe Daten handelt) genau verarbeiten und wo man sie darstellen möchte. Besteht der Wunsch strukturierte Daten auf einer speziellen Seite darzustellen, ist eventuell ein zusätzliches Page-Template anzuraten. Handelt es sich um eine Ausgabe, die regelmäßig vor oder nach dem Content eines Artikel erscheinen soll, kann man auch über das Hinzufügen eines Filters zu the_content nachdenken.

Die dritte Möglichkeit, die mir spontan einfällt, besteht darin, die Shortcode API von WordPress zu verwenden. Damit bekommt man eine recht flexible und mächtige Möglichkeit der Einbindung in die Hand. Innerhalb eines Artikels kann man beispielsweise [countryinfo] notieren und WordPress wird die Funktion ausführen, sofern der entsprechende Shortcode definiert ist. Es besteht ausserdem die Möglichkeit Parameter anzugeben, sodass die Ausgabe noch flexibler gestaltet werden kann, was in etwa so aussieht: [countryinfo country=“de“].

Damit WordPress mit dem Shortcode überhaupt etwas anfangen kann, müssen in der functions.php eures Themes (oder in einem Custom-Plugin) noch ein paar Zeilen PHP-Code eingefügt werden. Im Wesentlichen besteht die Aufgabe darin eine Funktion zu definieren, die dann mit add_shortcode registriert wird. Innerhalb der Funktion könnt ihr  dann shortcode_atts verwenden, um die Parameter zu verarbeiten, die in eurer Funktion nun als Array zur Verfügung stehen. Zu beachten ist lediglich, dass nicht nur das Array normalisiert bzw. auf die gewünschten Parameter reduziert wird, von den Parametern wird zudem erwartet, dass ihr Name lowercase (klein geschrieben) ist.

Obiges Beispiel (einer Anfrage an GeoNames) macht genau das, was bisher beschrieben wurde. Die Funktion extract extrahiert, wie der Name schon suggeriert, bzw. exportiert die Variablen in den Zugriffsraum eurer Funktion. Alternativ kann man die Ausgabe des Arrays von shortcode_atts auch direkt verwenden. Bleibt noch die Frage, wie man entfernte Dateien holt und dann die Ausgabe verarbeitet. Um das Rad nicht neu zu erfinden und um eventuelle Probleme beim Umgang mit Remote-Files zu umgehen, bietet sich die Nutzung der HTTP API von WordPress an. Dadurch wird die ganze Geschichte noch um einiges leichter, wie das obige Beispiel ebenfalls schön veranschaulicht.

Der letzte Schritt würde dann darin bestehen, die externen Daten zu verarbeiten. PHP 4 ist tot! Es lebe PHP 5 und SimpleXML und JSON, je nach vorliegendem Format. Falls es sich um RDF handelt, wird die Sache ein kleines bisschen komplizierter, allerdings bleibt sie immer lösbar. Schaut euch dazu auch einmal meinen Artikel XML, JSON und RDF an. Hier wird das Thema besprochen und es ist auch etwas Code dabei, der das ein wenig veranschaulicht. Den Rest der Arbeit nehme ich euch allerdings nicht ab, sondern wünsche euch nun viel Spaß bei Implementierung eurer Lösung!

Kurzes Update vom 22.12.2017: Bei den Anfragen an die Geonames Services muss der Username als Parameter mit angegeben werden, was im Code jetzt auch ersichtlich ist. Ersetzt einfach USERNAME mit eurem Login.

Ein Gedanke zu „XML-Daten mit WordPress anzeigen“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert