Tweak: WordPress Custom Post Type im RSS Feed

Seit Version 3.0 bietet WordPress die Möglichkeit, eigene Post Types analog zu „Artikeln“ seit 3.5 „Beiträge“ und „Seiten“ anzulegen. Was bisher schlecht bis nicht dokumentiert ist:
Ohne weitere Konfiguration erscheinen neu angelegte Custom Post Types in keinem Feed. Da mir spontan zwei verschiedene Szenerien eingefallen, sind hier nun zwei unterschiedliche Lösungsansätze:

A. Einen gemeinsamen RSS Feed für Beiträge und einen oder mehrere Custom Post Types

Nutzt man Custom Post Types zum Beispiel, um neben dem eigentlichen Blog noch einen Fotoblog zu führen, so kann es sinnvoll sein, sowohl gewöhnliche Beiträge, als auch den eigenen Custom Post Type in einem RSS Feed zu vereinen.

Um dem, von WordPress generierten, Haupt-Feed den eigenen Post Type hinzuzufügen genügt eine einfache Funktion, die in die functions.php des aktuell aktiven Themes oder in einem kleinen Plugin abgelegt wird:

// Einbinden eines Custom Post Types in den Hauptfeed
function mein_neuer_feed($qv) {
	if (isset($qv['feed']))
		$qv['post_type'] = get_post_types();
	return $qv;
}
add_filter('request', 'mein_neuer_feed');

Diese Funktion belässt Inhalte aus Beiträgen im Feed und ergänzt sie um Posts aus unserem Custom Post Type.
Haben wir aber mehrere verschiedene Custom Post Types in Benutzung – neben Fotoblog zum Beispiel noch Rezepte und Aufsätze, so müssen wir unsere Funktion um ein Array erweitern, das die Slugs aller Post Types enthält, die in den Feed sollen:

// Einbinden mehrerer Custom Post Types in den Hauptfeed
function mein_neuer_feed($qv) {
	if (isset($qv['feed']) && !isset($qv['post_type']))
		$qv['post_type'] = array('post', 'fotosblog', 'rezepte', 'aufsaetze');
	return $qv;
}
add_filter('request', 'mein_neuer_feed');

B. Einen eigenen Feed für einen Custom Post Type

Dieses Szenario hatte ich in einem Projekt, in dem neben den normalen Beiträgen auch Reviews veröffentlich werden sollen. Für die Reviews nutzte ich einen Custom Post Type.

Die Funktion, einen Feed für einen Custom Post Type zu generieren liefert WordPress schon ab Werk. Der entsprechende, automatisch generierte Link wirkt zwar etwas kryptisch funktioniert aber ohne Probleme:

http://deinedomain.de/feed/?post_type=CUSTOMPOSTTYPE

CUSTOMPOSTTYPE muss natürlich durch den Slug des jeweils auszugebenden Post Types ersetzt werden und schon kann es losgehen. Um die URL zur Weitergabe noch etwas zu vereinfachen könnten wir die folgende Zeile unserer .htaccess-Datei eintrichtern und ersetzen wieder CUSTOMPOSTTYPE durch den Namen unseres Post Types.

Redirect /feed/CUSTOMPOSTTYPE http://deinedomain.de/feed/?post_type=CUSTOMPOSTTYPE

Jetzt werden Aufrufe an deinedomain.de/feed/CUSTOMPOSTTYPE automatisch an die Feed URL unseres Post Types weitergeleitet.