Month: March 2016

Einen neuen Tag in das WordPress RSS-Feed einbinden

So, nach einiger Zeit habe ich nun endlich mein neues Hardware/Software-Bundle zusammengestellt und einen neuen Screencast veröffentlicht. Yeah! Ein neuer Entwickler-Screencast zu WordPress 😀 und diesmal zum Thema RSS Feeds in WordPress.

In Zeiten der WordPress REST API erscheinen RSS-Feeds plötzlich etwas verstaubt und klobig. Wer zieht XML schon dem schlanken JSON vor? Doch, wenn man sich das RSS-Feed System von WordPress einmal näher anschaut erkennt man auch dort noch einiges Potential, wenn es darum geht, schnell und einfach ein paar weitere Daten auszutauschen. Ich hatte vor einiger Zeit einen Kunden, dessen RSS-Feed auf anderen Webseiten eingebunden wurde und diese Webseiten benötigten nun weitere Informationen über die Blogbeiträge, welche sie einbanden. So gab es bestimmte Meta Informationen, welche mit übertragen werden sollten. Nun hätte ich hier wahrscheinlich einige schöne REST-Api Endpoints definieren können, die anderen Webseitenbetreiber auf ein schönes JSON-Feed hinweisen können und diese hätten dann ihre Software komplett neu schreiben können, um die gewünschten Daten zu erhalten. Oder aber, wir übergeben diese Daten mit dem von WordPress ausgegebene RSS-Feed.

Dieses Video ansehen auf YouTube.

Dieses Szenario spiele ich in diesem kurzen Video-Podcast durch. Basics, welche Du zum Verständnis des Screencasts benötigst (neben WordPress Grundlagen):

Wir haben die Metainformation “Farbe”, welche als ein weiterer Tag in das RSS-Feed eingebunden werden soll. Dazu haken wir uns zunächst in den Action-Hook ‘rss2_item‘ ein, welcher vor dem schließenden </item> ausgeführt wird. Mit Hilfe dieses Hooks können wir einen weiteren Tag einfügen. Einfach einen weiteren Tag einzufügen macht das RSS Dokument allerdings ungültig, wie man mit dem Feed Validator vom W3C prüfen kann. Deshalb müssen wir einen neuen Namespace deklarieren, in welchem wir den neuen Tag einpflegen können. Dazu gibt es den Actionhook ‘rss2_ns‘. Dieser wird ausgeführt, nachdem WordPress seine eigenen Namespaces deklariert hat.

Mit diesen beiden Hooks zusammen ist es also möglich, das WordPress Feed auf eine valide Art und Weise um einen Tag zu erweitern:

Nachdem ich dann durch war mit meinem kleinen Tutorial dachte ich mir ach, zeige ich Euch doch noch, wie einige der Filter funktionieren und hatte mich am 'the_title_rss'-Filter versucht. Na, das war ein Fail 😂 Ich hatte jetzt aber keine Lust mehr zu gucken, was genau ich da falsch gemacht habe. Wenn es jemand sieht, schreibt es doch gerade in die Kommentare 😉

Ich hoffe Sound und Auflösung des Videos sind so erstmal okay, hatte mich einige Zeit gedauert, in die neue Software einzuarbeiten. Dafür bin ich aber doch recht zufrieden mit meinem Intro, welches ich entworfen habe. Für einen Entwickler doch gar nicht so schlecht, oder?

Logo Support in WordPress 4.5

Logo Support in WordPress 4.5

Themedesigner aufgepasst. Das Release von WordPress 4.5 ist angesetzt für den zwölften April und hat – neben anderen Neuerungen – eine sehr schöne Neuerung für Euch bereit: Logosupport! Wollte man das Logo einer Seite über den Customizer auswechselbar machen, so musste man bisher immer entweder selbst eine entsprechende Sektion definieren – oder, was auch häufiger geschah – man zweckentfremdete den “Header Image”-Bereich für das Logo. Ab der Version 4.5 stellt WordPress eine offizielle Einstellung vor, welche vom Theme unterstützt werden kann: 'site-logo'.

Dieses Feature kannte man bisher aus dem Jetpack Plugin, von welchem es in den Core übernommen wird. Da es sich jetzt um eine offizielle Einstellung handelt, welche man im Theme unterstützen kann, wird es für Seitenbetreiber leichter, Logos beim Themewechsel so zu übernehmen, dass diese auch im neuen Layout mit der angemessenen Größe dargestellt werden.

Schauen wir deshalb kurz in den Code, wie diese neue Funktion eingebaut werden kann. In der functions.php kann man sich dazu in die 'after_setup_theme'-Aktion einhaken, und dort die Unterstützung deklarieren:

Dazu nutzt man add_theme_support(), übergibt mit 'site-logo' das unterstützte Feature und im Argumente-Array schließlich noch die gewünschte Bildgröße, welche man zuvor mit add_image_size() festlegen kann.

Danach muss man natürlich noch die header.php entsprechend anpassen. Hier gibt es am Version 4.5 einen neuen Template-Tag! get_the_site_logo() beziehungsweise the_site_logo(). Diese Funktion kann in wp-includes/general-template.php gefunden werden und gibt zum einen einen Link auf die Startseite, sowie das Bild aus.

Gefiltert werden kann die Ausgabe über den Filter 'get_the_site_logo', welche zum einen den zu filternden HTML-String, zum anderen die angestrebte Bildgröße übergibt. So könnte es ja sein, dass der ein oder andere das Logo nicht gleich mit einem Link auf die Startseite verknüpfen möchte oder ähnliches.

Standardmäßig verfügt der Link über die Klasse .site-logo-link und der IMG-Tag über .site-logo und .attachment-{$groesse}.

In der header.php kann man daher das Logo wie folgt einbinden:

Wie Ihr seht prüfe ich hier zunächst, ob der Template Tag existiert, also die aktuellste WordPress Version verwendet wird. So verhindert man, dass das Theme auf einer älteren WordPress Version einen Fatal Error auswirft.

Wollt Ihr Euch die neuen Funktionen in WordPress 4.5 schon einmal ansehen: Die aktuelle WordPress 4.5 beta kann hier heruntergeladen werden. Twenty Sixteen wird das Feature auch unterstützen. Die aktuelle Github Version mit 'site-logo'-Support kann hier heruntergeladen werden. Get your Theme ready für 'site-logo', am 12. April ist es soweit 🙂