Was ist ein Custom Post Type?
WordPress kommt von Haus aus mit zwei Standard-Inhaltstypen: Beiträge (Posts — für Blog-Artikel) und Seiten (Pages — für statische Inhalte wie Impressum oder Über uns). Für 80 Prozent einer einfachen Website reicht das. Aber sobald deine Seite strukturierte Inhalte braucht, die sich wiederholen und jeweils eigene Felder haben, wird es eng. Genau hier kommen Custom Post Types ins Spiel.
Ein CPT ist im Kern ein zusätzlicher Menüpunkt im WordPress-Backend, der genauso funktioniert wie "Beiträge" — nur dass er eben "Referenzen" oder "Produkte" oder "Mitarbeiter" heißt, eine eigene Übersicht, eigene Detail-Seiten, eigene Kategorien und eigene Zusatzfelder bekommt.
Konkretes Beispiel: Ein Architekturbüro will seine bisherigen Projekte auf der Website zeigen. Jedes Projekt hat einen Namen, einen Ort, ein Baujahr, einen Bauherrn, eine Kategorie (Wohnen, Gewerbe, Öffentliches Gebäude), Grundrisse und eine Fotogalerie. Das als normale WordPress-"Seite" zu bauen wäre Murks — jede Seite sähe anders aus, man kann nicht filtern, nicht sortieren, nichts dynamisch abrufen. Mit einem CPT "Projekte" bekommt das Büro einen eigenen Menüpunkt, eine saubere Übersicht, automatische Filterung nach Kategorie, und jedes neue Projekt wird in drei Minuten eingepflegt.
Typische Anwendungsfälle für Custom Post Types
Die Liste ist lang, hier die häufigsten in der Praxis:
- Produkte — bei Shops automatisch über WooCommerce, bei Katalogseiten ohne Verkauf oft als eigener CPT
- Referenzen / Projekte — für Agenturen, Architekten, Handwerker
- Mitarbeiter / Team — mit Foto, Position, E-Mail, Aufgabenbereichen
- Immobilien — mit Preis, Lage, Zimmerzahl, Quadratmetern, Bildergalerie
- Events / Termine — mit Datum, Ort, Anmeldelink
- Rezepte — mit Zutatenliste, Zubereitungszeit, Nährwerten
- Fahrzeuge — bei Autohäusern mit Marke, Modell, Baujahr, Kilometerstand
- Kurse — mit Beschreibung, Dozent, Dauer, Termin
- Standorte / Filialen — mit Adresse, Öffnungszeiten, Karte
- Testimonials — Kundenstimmen mit Name, Firma, Zitat, Foto
- FAQ-Einträge — als strukturierter Inhalt, nicht als Fließtext
Jeder dieser Fälle hat eines gemeinsam: strukturierte, wiederkehrende Daten mit festen Feldern, die sich auf der Frontend-Seite dynamisch abrufen und darstellen lassen.
Wie legst du einen Custom Post Type an?
Es gibt zwei Wege, und welchen du wählst, hängt davon ab, wie tief du im Code stecken willst:
### Weg 1: Per Plugin (für alle, die keinen Code anfassen wollen)
Die gängigen Plugins dafür sind:
- Custom Post Type UI (CPT UI) — kostenlos, klassisches Backend-Tool, seit Jahren der Standard
- Pods — mächtiger, kombiniert CPT mit Custom Fields in einem Tool
- ACF Pro (Advanced Custom Fields) — baut nicht nur CPTs, sondern auch eigene Felder dazu
Mit diesen Plugins klickst du den CPT im Backend zusammen: Name, Slug, Icon, Labels ("Neues Projekt hinzufügen"), Position im Menü, welche Funktionen aktiv sein sollen. Dauert fünf Minuten.
### Weg 2: Per Code (für Entwickler)
Im Theme oder in einem Custom Plugin wird eine register_post_type()-Funktion aufgerufen. Ein minimales Beispiel sieht so aus:
register_post_type('projekt', array(
'label' => 'Projekte',
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'supports' => array('title', 'editor', 'thumbnail'),
));
Damit weiß WordPress: "Es gibt jetzt einen Inhaltstyp namens Projekt." Danach kannst du eigene Template-Dateien im Theme anlegen (single-projekt.php, archive-projekt.php), um die Darstellung zu steuern.
Ein Parameter, den du nie vergessen solltest: show_in_rest => true. Das macht den CPT sowohl für den Gutenberg-Block-Editor verfügbar (sonst öffnet sich der alte Classic Editor) als auch für die REST API. Ohne diesen Schalter fehlen dir beide — und das merkst du oft erst, wenn du den CPT schon benutzt und Einträge angelegt hast.
Custom Taxonomies — Ordnung in den Inhalten
CPTs lösen das Problem "eigener Inhaltstyp". Aber sobald du mehr als zehn Einträge hast, brauchst du auch Ordnung — und genau dafür gibt es Custom Taxonomies. WordPress kennt von Haus aus zwei Standard-Taxonomien: Kategorien und Schlagwörter. Eine Custom Taxonomy ist das gleiche Prinzip, nur für deinen eigenen Post Type.
Beispiel "Projekte": Du willst nach Branche (Wohnen, Gewerbe, Öffentliches Gebäude) und Region (Norddeutschland, Berlin, NRW) filtern. Das sind zwei Custom Taxonomies, die du mit register_taxonomy() an den CPT "projekt" bindest:
register_taxonomy('branche', 'projekt', array(
'label' => 'Branche',
'hierarchical' => true,
'show_in_rest' => true,
));
Mit hierarchical => true funktioniert die Taxonomy wie Kategorien (mit Parent-Child-Beziehungen), mit false wie Schlagwörter (flache Liste). Auch hier gilt: show_in_rest => true nicht vergessen, sonst kannst du die Taxonomy nicht im Block-Editor auswählen.
Im Alltag registrierst du Taxonomies bequem über CPT UI oder ACF Pro — ohne eine Zeile Code. Der Effekt bleibt der gleiche: saubere Ordnung, Archiv-Seiten pro Taxonomy-Begriff, eingebaute Filter-URL wie /projekt/branche/gewerbe/.
Custom Fields — der natürliche Partner eines CPT
Ein CPT allein bringt dir nicht viel, wenn du nur Titel und Fließtext hast. Die wahre Stärke entsteht, wenn du Custom Fields dazupackst — zusätzliche Felder, die nur für diesen Post Type existieren. Beispiel "Immobilien":
- Textfeld: Adresse
- Zahlenfeld: Kaufpreis
- Zahlenfeld: Quadratmeter
- Zahlenfeld: Zimmer
- Auswahlfeld: Energieklasse (A, B, C, D...)
- Bildergalerie: Fotos
- Datum: Verfügbar ab
Das Standard-Tool dafür ist Advanced Custom Fields (ACF) — Weltmarktführer, solide, gut dokumentiert, mit freier und Pro-Version. Die Pro-Version kostet rund 60 Euro pro Jahr und ist praktisch Pflicht, sobald du mit CPTs ernsthaft arbeitest.
Warum sind Custom Post Types für deine Website wichtig?
Ohne CPTs endest du in zwei schlechten Szenarien:
- Alles als "Seite" bauen. Du hast 30 Immobilien als 30 einzelne WordPress-Seiten. Keine Filterung, keine Sortierung, keine einheitliche Darstellung, jede Seite manuell gepflegt. Chaos.
- Alles als "Beitrag" in Kategorien quetschen. Jede Referenz ist ein Blogartikel in der Kategorie "Referenz". Funktioniert halbwegs, aber der Backend-Bereich wird unübersichtlich, und das Blog-Archiv zeigt plötzlich Projekte an, die gar keine Artikel sind.
Mit einem CPT hast du:
- Saubere Struktur. Jede Inhaltsart hat ihren eigenen Platz im Backend.
- Eigene Templates. Die Detailansicht kann komplett anders aussehen als ein normaler Blogartikel.
- Dynamische Abrufbarkeit. Mit Tools wie dem Gutenberg Query Loop Block oder Elementor-Loop-Widgets kannst du CPT-Inhalte filtern, sortieren und überall auf der Seite einbinden.
- SEO-Vorteile. Jeder CPT kann eigene URL-Struktur, eigene Meta-Title-Muster und eigene Schema Markup-Typen bekommen — etwa "Product" für Produkte oder "Event" für Veranstaltungen.
Worauf du achten solltest
Nicht jeder Inhalt braucht einen CPT. Wenn du auf deiner Über-uns-Seite drei Teammitglieder zeigst und in zwei Jahren keine weiteren dazukommen, ist ein CPT Overkill. Fünf Textblöcke im Editor reichen.
CPT ohne Template-Arbeit ist halbfertig. Ein frisch angelegter CPT sieht im Frontend genauso aus wie ein normaler Blogartikel, weil kein eigenes Template existiert. Die Custom Fields werden nicht automatisch angezeigt — das muss über Template-Dateien oder den Page Builder manuell eingebunden werden.
Bei Theme-Wechsel kann es kompliziert werden. Wenn deine CPTs per Theme-Code registriert sind (statt per Plugin), verschwinden sie beim Theme-Wechsel aus dem Menü. Die Inhalte sind noch in der Datenbank, aber unsichtbar. Deshalb: CPTs immer per Plugin oder Custom-Plugin registrieren, nie direkt im Theme.
Slug-Planung ist wichtig. Wenn dein CPT "projekt" heißt und die URL /projekt/beispielname/ lautet, musst du vorher prüfen, dass dieser Pfad nicht schon durch eine Seite belegt ist — sonst gibt es Konflikte.