WordPress Custom Post Types – wozu sind sie gut?

Nachdem ich zum ersten Mal über den Begriff der WordPress Custom Post Types gestolpert war, habe ich mich oft gefragt, wozu sie eigentlich gut sein sollen. Was sie sind, konnte ich mir relativ schnell erklären: Custom Post Type = benutzerdefinierter Beitragstyp. Doch alles, was ich darüber las, arbeitete mit Beispielen, die mir die Sinnhaftigkeit nicht wirklich näherbrachten. Für Bücher seien sie gut, hieß es oft, gerne genommen auch Filme, manchmal einfach auch nur Produkte. Also probierte ich es aus – mit dem Ergebnis noch größerer Ratlosigkeit.

Dann besuchte ich den Abend des Kölner WordPress Meetup, an dem sich alles um WordPress Custom Post Types drehte. Und was soll ich sagen: Der Euro ist gefallen. Centweise, aber er ist gefallen. Entsprechend nun also mein Versuch, den Sinn des Arbeitens mit diesen benutzerdefinierten Beitragstypen zu erklären.

WordPress und seine Beitragstypen

Leute beschweren sich oft, dass in dieser Internetwelt so viel auf Englisch stattfindet. Manchmal ist es aber wirklich sinnvoll, einen englischen Begriff zu benutzen, ihn dabei aber gar nicht als englisches Wort zu verstehen, sondern als Fachterminus. Bei den Post Types stoßen wir hier nämlich mal wieder auf die Grenzen der Trennschärfe. Tatsächlich sind Seiten genauso wie Beiträge auch nur Beitragstypen, sprich: Post Types. Verstehen wir Post Type also als den übergeordneten Begriff, der die Gesamtheit aller Vorlagen beschreibt, die zur Veröffentlichung von Inhalten da sind: Seiten, Beiträge und nun auch die benutzerdefinierten, die Custom Post Types.

Wenn man Seiten und Beiträge miteinander vergleicht, stellt man schnell fest: Es gibt mehr Gemeinsamkeiten als Unterschiede. Beide arbeiten mit einer Überschrift und weisen ein großes Textfeld auf, in das Sie auch Bilder (oder Videos, Tweets etc.) einbinden können. Sie arbeiten sogar beide mit einem Beitragsbild. Was auch keine gute Übersetzung ist: Im Englisch heißt es Featured Image, also vorgestelltes Bild. Das beschreibt die Funktion wesentlich besser und trägt nicht so sehr zur Irritation bei, warum eine Seite ein Beitragsbild haben sollte.

Ein wesentlicher Unterschied zwischen Seiten und Beiträgen sind sicherlich die Kategorien und Schlagwörter, die es für Seiten nicht gibt.

Custom Post Type – ein weiterer Beitragstyp

Mit einem Custom Post Type kommt nun also ein weiterer Beitragstyp hinzu. Ohne weitergehende Bearbeitung, sprich: Programmierung, nutzt der aber auch nur die Funktionalität eines Beitrags. Genau darüber bin ich immer gestolpert: Wozu sollte ich mir die Mühe machen, einen Custom Post Type anzulegen, wenn der auch nur wie ein stinknormaler Beitrag aussieht?

Die Kollegen vom WordPress Meetup haben uns gezeigt, dass das nicht der Fall sein muss. Im Live-Programming erfuhren wir, wie sich ein eigener Beitragstyp erstellen lässt, der letztlich gar nicht mehr viel von einem stinknormalen Beitrag hat. Vielmehr kann das Ganze schnell wie eine Produktseite eines Online-Shops aussehen und funktionieren. Wobei das Attribut schnell sehr relativ ist: Das Vorgehen setzt versierte Programmierkenntnisse voraus.

Das Meetup hat mir aber auch gezeigt, dass es nicht zwangsläufig diese weitgehende Programmierleistung braucht, um mit der einfachen Form eines WordPress Post Types etwas anfangen zu können. Wie so oft ist alles nämlich nur eine Frage des Kontextes.

WordPress Custom Post Type: ein Anwenderfall

Kurse und Website Angebote als Custom Post TypesNehmen wir unsere Website Internetkurse Köln als Beispiel. Wir haben einige Seiten, so zum Beispiel unsere Startseite, das Impressum oder unsere Datenschutzerklärung. Unsere wesentlichen Inhalte sind aber alle Beiträge: die Kurse, unser Blog und zukünftig auch unsere Website Angebote. (In Ihrem Fall könnten das neben dem Blog, das sie vielleicht führen, Ihre Angebote sein: Heizung, Sanitär, Elektro und Fliesen. Oder Äpfel, Birnen und Bananen.) Für unsere Kurse haben wir am Anfang einmal entsprechende Beiträge geschrieben. Seither sind unzählige Blogbeiträge hinzugekommen. Bei zwanzig Beiträgen pro Listenseite sind die Kurse also schnell aus dem Fokus verschwunden. Zwar lassen sich in der Liste auch ältere Beiträge über die Wahl ihrer Kategorie gut darstellen. Doch das muss man erst einmal tun, um überhaupt einen Blick auf sie werfen zu können.

Erster Einsatzzweck ist es also, Beiträge bestimmter Kategorien durch einen entsprechenden Custom Post Type übersichtlicher darzustellen und damit im Backend einen leichteren Zugriff zu ermöglichen. Nicht länger erscheinen diese in der normalen Beitragsliste, sondern werden unter einem eigenen Menüeintrag in der Seitenleiste geführt.
Unsere Kurse erscheinen nun also völlig getrennt von den Blogbeiträgen, die weiterhin unter den Beiträgen aufgelistet sind.

Unterschiedliche Formatierung der einzelnen Post Types

Zwei Custom Post Types bei Internetkurse Köln
Zwei Post Types mit unterschiedlichem Hintergrundbild

Unsere Kurse (und zukünftig auch unsere Website Angebote) sehen im Frontend anders aus als die Blogbeiträge. Zum Beispiel geben wir für die Kurse nicht den Autoren und das Veröffentlichungsdatum aus, bei den Blogbeiträgen hingegen schon. Wir haben dafür seinerzeit ein anderes Vorgehen gefunden. Mit Custom Post Types aber lässt sich ein solcher Unterschied viel leichter realisieren. Denn für ein Custom Post Type kann man eine eigene Vorlage in Form einer php-Datei erstellen. Statt der single.php, die für die Darstellung einzelner Beiträge zuständig ist, können wir nun eine single-kurse.php erstellen und in ihr festlegen, wie denn nun bitte schön die einzelnen Elemente angeordnet sein sollen.

Aber auch fern der PHP-Programmierung ist es möglich, Custom Post Types anders aussehen zu lassen als normale Beiträge. Denn in dem Moment, da ein Custom Post Type Kurse existiert, lassen sich einzelne Elemente dieses Beitragstyps per CSS über die Klassen .kurse und .single-kurse ansprechen. Hätten wir es also zum Beispiel nicht mit Kursen, sondern mit Obst und Gemüse zu tun, für die wir je einen Post Type angelegt haben, könnten wir diesen Beiträgen über die Klassen .single-obst und .single-gemuese unterschiedliche Hintergrundbilder geben.

Zweiter Einsatzzweck für Custom Post Types ist also die erleichterte Möglichkeit der unterschiedlichen Formatierung.

Noch schönere sprechende Permalinks

An unserer Permalinkstruktur lässt sich bislang nicht erkennen, ob es sich um einen Beitrag der Kategorie Blog oder der Kategorie Kurse handelt: www.internetkurse-koeln.de/bilder-bearbeiten/ könnte sowohl ein Kurs, aber auch ein Blogbeitrag zum Thema Bildbearbeitung sein. Durch das Erstellen eines Custom Post Types Kurse entsteht nun automatisch eine neue Permalinkstruktur für diesen Post Type. Fortan würde die URL www.internetkurse-koeln.de/kurse/bilder-bearbeiten verdeutlichen, dass wir es mit einem Kurs zu tun haben.

Dritter Einsatzzweck: die schönere Permalinkstruktur, über die sich auch Suchmaschinen freuen: Die Struktur sagt noch mehr über die Absichten des Beitrags aus.

Fassen wir zusammen:

  • Bessere Übersicht im Backend,
  • einfachere Anpassungsmöglichkeiten der Darstellung im Frontend und
  • eine Maßnahme zur Suchmaschinenoptimierung.

In meinen Augen sind das drei berechtigte Wünsche, die sich auf einen Streich realisieren lassen. Grund genug, für unseren geplanten Relaunch Custom Post Types anzulegen!

WordPress Custom Post Types anlegen

Wie auf dem Weg nach Rom gibt es auch hier verschiedene Möglichkeiten, zum Ziel zu gelangen. Wir bedienen uns der einfachsten und nutzen das Plugin Custom Post Type UI. Nach der Installation erstellt das Plugin sein eigenes Menü in der Seitenleiste. Per Klick auf CPT UI landen Sie direkt auf der Seite Neuen Post Type hinzufügen und stehen da vor einem sehr umfangreichen Formular, das Ihnen gefühlte tausend Fragen stellt. Dabei geht es aber eigentlich nur darum, immer wieder den Begriff zu benutzen, für den Sie Ihren Custom Post Type erstellen wollen. In unserem Fall sind es eben die Kurse. In Ihrem Fall könnte dort als Post Type Kurzlink obst stehen. Als Beschriftung für den Plural wählen Sie vielleicht Obstsorten, für den Singular bleibt es bei Obst. Im Weiteren sind es dann Einträge wie Alle Obstsorten oder Neue Obstsorte hinzufügen.

Eigenes Dashicon einfügen

Im Bereich Einstellungen können Sie es erst einmal bei den Voreinstellungen belassen. Einzig sollten Sie hier noch Ihrem Custom Post Type ein eigenes Bildchen zuordnen, ein sogenanntes Dashicon, das in der Seitenleiste neben dem Namen des Custom Post Types erscheint. In unserem Fall ist das natürlich unser Logo, das nicht größer als 20 x 20 Pixel sein darf und das Dateiformat .gif oder .png hat, damit es einen (semi)-transparenten Hintergrund zeigen kann.

Beitragselemente für Custom Post Type nutzen

Schließlich können Sie für Ihren Post Type noch festlegen, welche Elemente eines normalen Beitrags er benutzen soll. Zu den vorausgewählten Titel, Text-Editor und Beitragsbild können Sie noch weitere wie den Autoren oder die Revisionen hinzu wählen. Last but not least können Sie bereits vorhandene Taxonomien für Ihren Post Type nutzen, sprich: bereits vorhandene Kategorien und Schlagwörter, die auch für Ihre Blogbeiträge und/oder weitere Custom Post Types zur Verfügung stehen. Sie können aber auch mit dem Plugin eigene Taxonomien anlegen.

Eigene Taxonomien anlegen

Das Plugin gibt als eigene Taxonomie das Beispiel Regisseur vor, das sich dann auf einen gedachten Post Type Filme bezieht. Denkbar wäre in dieser Filmwelt dann natürlich auch eine Taxonomie Schauspieler oder Filmkomponist. In unserem Anwendungsfall könnten wir eine Taxonomie Einsteiger- im Gegensatz zum Fortgeschrittenen-Kurs anlegen. Tatsächlich werden wir darauf aber wahrscheinlich verzichten und belassen es bei den vorhandenen Kategorien.

Das Anlegen einer neuen Taxonomie erfordert jedenfalls das Ausfüllen eines genauso umfangreichen Formulars wie das Anlegen eines neuen Post Types.

Am Ende gilt es nur noch, auf den Button Post Type (bzw. Taxonomie) hinzufügen zu klicken, und schon erscheint in Ihrer Seitenleiste ein neuer Eintrag. Für Änderungen können Sie später wieder darauf zugreifen und entsprechend bearbeiten.

Erstellen und bearbeiten von [Name Ihres Custom Post Types]

Das Erstellen und Bearbeiten neuer Beiträge für Ihren Custom Post Type erfolgt genauso wie das Erstellen und Bearbeiten eines stinknormalen Beitrags. Nur dass Sie dies eben nicht länger unter dem Menüpunkt Beiträge tun, sondern unter dem Menüeintrag für Ihren Post Type. Hier sehen Sie dann auch, wozu die ganzen Formulareinträge gut waren. So heißt es zum Beispiel nicht Neuen Beitrag hinzufügen, sondern Neuen [Name Ihres Custom Post Types] hinzufügen. In unserem Fall also Neuen Kurs hinzufügen.

Auf diese Weise werden wir nun zukünftig unsere Kurse (und auch die geplanten Website Angebote) fein säuberlich voneinander und von den Blogbeiträgen trennen. Und im Gegensatz zu meinen ursprünglichen Zweifeln und Vorbehalten erlebe ich dieses Vorgehen als sehr hilfreich.


Beitragsbilder: Britta Kretschmer und Thorsten Schiller

2 Anmerkungen zu “WordPress Custom Post Types – wozu sind sie gut?

  • 28. Januar 2017 um 21:52
    Permalink

    Hallo, ich versuche die Thematik gerade mit dem Plugin Custom Post Type UI zu lösen. Leider sehen die damit generierten Seiten so aus, wie Beiträge und eben nicht wie Seiten. Wo kann ich denn einstellen, dass die Custom Post Type Seiten wie Seiten aussehen sollen (also ohne Kategorie etc.)
    Vielen Dank im Voraus und viele Grüße,
    Ella

  • 31. Januar 2017 um 12:35
    Permalink

    Hallo Ella,

    je länger ich darüber nachdenke, desto mehr stellt sich mir die Frage, ob es hier nicht eigentlich um das Erstellen von Seitentemplates geht. Das wäre dann aber eine ganz andere Baustelle.

    Vielleicht sollen die gewünschten Seiten aber auch eine ganz andere Funktion erfüllen. Dann hilft vielleicht das Plugin Post Types Definitely von Felix Arntz weiter, das er beim im Beitrag beschriebenen Meetup vorgestellt hat. Das Plugin bietet die Grundlage dafür, Post Types zu erstellen, die weit über die normale Funktionalität hinausgehen. Dies erfordert allerdings einiges an Entwicklungsleistung.

    LG, bk

Schreibe einen Kommentar

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