WordPress Feed beeinflussen

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 15 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

RSS-News
Bild: Jean von Oertzen

WordPress stellt dem Leser eine Vielzahl an unterschiedlichen Feeds bereit, nähere Erläuterungen wurden bereits im Artikel „Feed-Adressen unter WordPress“ beschrieben.

Da WordPress aber auch des öfteren als Nicht-Weblog-System verwandt wird, kann es sein, dass die Feed-Ausgabe an diesen Stellen nicht ausreicht und man bestimmte Inhalte mischen möchte um den Lesern einen entsprechenden Feed zur Verfügung zu stellen. WordPress ist dahingehend gerüstet und flexibel genug um auch diese Anforderung zu erfüllen. Wie man das macht und wie man es in einem Theme komfortabel per Funkion einbaut, dazu in diesem Artikel einige Worte und Code-Schnipsel.

Der Template Tag query_posts ist sehr mächtig und kann in diesem Fall auch weiter helfen, so ist kein Eingriff in den Core oder eine Erweiterung des Systems nötig.

Um aber das Prinzip ein wenig besser zu verstehen und sich den Zusammenbau eines Feed zu erleichtern, im Vorfeld einige Hinweise und Grundlagen zu Feeds in WordPress.

WordPress bietet die vier Feed-Formate RDF, RSS 0.92, RSS 2.0 und ATOM 1.0 (seit WP V2.*) an. Diese können im Standard auf Beiträge, Kommentare und alle Inhalte eines Archiv erstellt werden – so zum Beispiel Kategorien oder Tags. Einige Beispiele zum Verständnis.

  • normaler Feed (Permalinks inaktiv) für RDF: http://example.de/?feed=rdf
  • normaler Feed (Permalinks inaktiv) für RSS: http://example.de/?feed=rss
  • normaler Feed (Permalinks inaktiv) für RSS2: http://example.de/?feed=rss2
  • normaler Feed (Permalinks inaktiv) für Atom: http://example.de/?feed=atom
  • normaler Feed (Permalinks aktiv) für für den Tag examble im Format RSS 2: http://example.de/?feed=rss2&?tag=examble
  • normaler Feed (Permalinks aktiv) für RDF: http://example.de/feed/rdf
  • normaler Feed (Permalinks aktiv) für RSS: http://example.de/feed/rss
  • normaler Feed (Permalinks aktiv) für RSS2: http://example.de/feed
  • normaler Feed (Permalinks aktiv) für Atom: http://example.de/feed/atom
  • normaler Feed (Permalinks aktiv) für für den Tag examble im Format RSS 2: http://example.de/tag/examble/feed/

Nun soll der Feed auf Basis von Kategorien erstellt werden und das Erstellen eines Feeds, in dem verschiedene Kategorien ausgeschlossen werden, wird ebenso realisiert. Alle Beispiele basieren dabei auf dem Format RSS2. Analog zu den im Vorfeld aufgezeigten Möglichkeiten können auch andere Formate erstellt werden.

  • der Feed der Kategorie mit ID 23: http://example.de/feed?cat=23
  • ein Feed aus den Kategorien mit ID 12, 13, 23: http://example.de/feed?cat=12&cat=13&cat=33
  • Filter des Feeds durch Ausschließen der Kategorie mit ID 23: http://example.de/feed?cat=-23
  • Filter des Feeds durch Ausschließen der Kategorien mit ID 12, 13, 23: http://example.de/feed?cat=-12&cat=-13&cat=-33

Vor allem die zweite Möglichkeit zeigt deutlich auf, dass man Feeds erstellen und die unterschiedlichen Kategorien mischen kann. So kann man, besonders interessant bei Websites mit einem vielschichtigen Angebot an Themen, spezifische Feeds für die unterschiedlichen Zielgruppen erstellen.

Nun ist diese Form zwar recht einfach und schnell erstellt, aber damit steht keine Funktion beriet, die man einfach an verschiedenen Stellen nutzen kann. Aber die Themes in WordPress lassen die Erweiterung via PHP zu uns so kann man sich eine oder mehrere Funktionen erstellen und diese, abgelegt in der functions.php des Themes, nutzen. Auch dazu ein Beispiel.


function fb_cat_exclude($query) {
    if ($query->is_feed) {
        $query->set('cat','-12,-13,-33');
    }
    return $query;
}

add_filter('pre_get_posts','fb_cat_exclude');

Das obige Beispiel erstellt eine Funktion, die einen Feed aus allen Bereichen, außer Kategorie mit ID 12, 13 und 33 enthält. Mit Hilfe der Filter-Hooks wird diese Funktion an den den Query übergeben. Damit wird in das Herz von WordPress zum Erstellen der Ausgabe eingegriffen. Mit Hilfe des Conditional Tag is_feed() wird dafür gesorgt, dass das Entfernen der drei Kategorien nur im Feed statt findet.

Damit steht Ihnen ein mächtiges Werkzeug zur Verfügung, der Leser konsumiert die Inhalt, die Sie in den Bereichen erstellen wollen. Ebenso kann man so die Inhalte des Feeds beeinflussen und auf spezielle Anforderungen gestalten.

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.