WordPress mit Custom-Post-Types erweitern

Bei WordPress kennst du mindestens zwei sogenannte Post-Types selbst dann, wenn du dich in der Lernkurve von diesem CMS noch ganz unten befindest – Beiträge und Seiten. Aber auch Anhänge, Revisionen und Navigations-Items sind solche Post-Types. Wir haben es hierbei mit einer ganz speziellen Funktion zu tun, die dafür sorgt, dass das jeweilige Format auch genau das tut, was es soll.

  • Beiträge fungieren später z.B. als Blog-Beiträge.
  • Seiten stellen die statischen Unterseiten dar.
  • Anhänge sind sämtliche medialen Dateien, die auf der Seite genutzt werden können.
  • Revisionen speichern frühere Versionen von Beiträgen und Seiten ab, falls sie zu einem späteren Zeitpunkt wiedereingesetzt werden sollen.
  • Navigations-Items bilden das Menü.

Ein Custom-Post-Type kann allerdings jede Art von Inhalt darstellen. Bei WordPress-Premium-Themes (wie z.B. das Divi Theme oder Enfold) kennst du zum Beispiel sicherlich die Möglichkeiten, Portfolio-Elemente, Mitarbeiter oder Zitate anstelle eines normalen Beitrags anzuelegen. Hierbei handelt es sich um ganz klassische Custom-Post-Types, die der Theme-Entwickler in seinem WordPress-Theme integriert hat.

Eigene Custom Post Types generieren

Wenn du zum Beispiel kein Premium-Theme mit bereits vorgefertigten Post-Types nutzt, aber dennoch eigene Bereiche haben möchtest, um dir das Leben mit WordPress zu erleichtern, kannst du natürlich auch ganz eigene Post-Types generieren. Für Fortgeschrittene gibt es hierbei einen Generator bei GenerateWP, der den einzubauenden Code automatisch erstellt. Wie immer gilt: Erstelle ein WordPress-Backup, bevor du Dateien deiner WordPress-Installation änderst.

Jeder, der mit dem Coding nicht so bewandert ist, sollte stattdessen aber lieber WordPress-Plugins für Custom-Post-Types nutzen und nicht selbst in der functions.php herumdoktorn. Das Custom Post Type UI ist zum Beispiel ein sehr beliebtes Plugin, das auch regelmäßig geupdated wird und ich selbst schon seit Jahren nutze.

Macht ein CPT überhaupt Sinn?

Um dies besser verdeutlichen zu können, brauchen wir ein Beispiel. Nehmen wir dafür mal einen fiktiven Blog zur Hand, der aus dem Food-Bereich stammt. Er bietet hunderte von spannenden Rezepten an, die auch das Herz der Seite darstellen. Hinzu kommen immer wieder Testberichte und Blogartikel aus dem täglichen Leben des Bloggers. Letztere werden stärker dazu genutzt, um die Seite für Google zu optimieren. Rein durch Rezepte ist das in der heutigen Zeit sehr schwierig. Diese sind nach wie vor der Kern der Seite, rutschen aber durch Blogeinträge zum selben Thema immer mehr aus dem Fokus. Indem für diese Rezepte ein Custom-Post-Type angelegt wird, können sie durch einen speziellen Menüeintrag und eine eigene Kategorisierung, die unabhängig von den Blogbeiträgen erfolgt, leichter vom Leser aufgerufen werden.

Mit anderen Worten machen solche Inhaltsblöcke also immer dann Sinn, wenn man eine sehr umfangreiche Seite hat und diese vor allem auch im Backend übersichtlicher sortieren möchte.

Aber das ist noch nicht alles: Custom-Post-Types erlauben natürlich eine individuelle optische Gestaltung. Rezepte und alle anderen nach eigenen Wünschen angepassten Inhalte unterliegen einem einheitlichen Layout. So kann zum Beispiel ein Button zu jedem Rezept hinzugefügt werden, um das Ausdrucken zu erleichtern. Oder ein eigener schöner Block mit Zutaten kann einfach gecodet und gestaltet werden.

Custom Post Types dem RSS Feed hinzufügen

Nach wie vor nutzen eine Menge Leute den RSS-Feed, um sich über die liebsten Blogs auf dem Laufenden zu halten. Damit aber auch neue Post-Types und nicht nur Beiträge in diesem Feed auftauchen, sollte in der functions.php eine kleine Änderung durchgeführt werden.

Zunächst; beim Anlegen des Post Types (egal, ob manuell oder mittels Plugin) gibst du ja einen Titel dafür ein. Den brauchst du hierfür.

Öffne deine functions.php-Datei und füge folgende Zeilen hinzu:

function myfeed_request($qv) {
if (isset($qv[‚feed‘]) && !isset($qv[‚post_type‘]))
$qv[‚post_type‘] = array(‚post‘, ‚beispiel‘, ‚test‘);
return $qv;
}
add_filter(‚request‘, ‚myfeed_request‘);

Du siehst die Post-Types „beispiel“ und „test“. Statt diesen fügst du deine eigenen Post-Types hinzu. Achte immer darauf, dass sie mit einem Komma getrennt sind!

Alternativ kannst du auch folgenden Code nutzen, um im RSS-Feed alle neu veröffentlichten Post-Types erscheinen zu lassen:

function myfeed_request($qv) {
if (isset($qv[‚feed‘]))
$qv[‚post_type‘] = get_post_types();
return $qv;
}
add_filter(‚request‘, ‚myfeed_request‘);

Welche Variante ist hier für dich die richtige?

Die erste Version eignet sich immer dann, wenn du Post-Types angelegt hast, die zwar nützlich für SEO und die Seite sind, aber nicht im RSS-Feed auftauchen sollen. Das kann etwa aus dem Grund sein, dass du befürchtest, dass dies deine Leser belästigen könnte und die es am Ende als Spam wahrnehmen.

 

Seit über neun Jahren bin ich in der wunderbaren Welt von WordPress unterwegs. Heute erstelle ich nicht nur erfolgreich eigene WordPress-Websites, sondern sorge auch in einer bekannten Online-Marketing-Agentur für glückliche Kunden – auch hier oft dank WordPress.