Zum Inhalt springen
BeoHosting
BeoHosting
WordPress

Leitfaden zu WordPress Custom Post Types

BeoHosting Team··10 Min. Lesezeit Lesezeit
Leitfaden zu WordPress Custom Post Types

Was sind Custom Post Types

Die WordPress-Website-Plattform bringt standardmäßig zwei Inhaltstypen mit – Posts (Blog-Artikel) und Pages (Seiten). Die meisten Websites haben jedoch Inhalte, die keinem dieser Typen angehören. Portfolio-Projekte, Produkte, Bewertungen, Veranstaltungen, Immobilien, Rezepte oder Teammitglieder sind Beispiele für Inhalte, die eine eigene Struktur und Darstellung erfordern. Custom Post Types oder benutzerdefinierte Inhaltstypen ermöglichen es Ihnen, neue Inhaltstypen mit eigenen Feldern, Taxonomien und Templates zu erstellen.

Custom Post Types sind ein fundamentales Konzept in der WordPress-Entwicklung, das WordPress von einer Blog-Plattform in ein vollständiges CMS (Content Management System) verwandelt. Jedes WordPress-Plugin, das einen neuen Inhaltstyp hinzufügt, wie WooCommerce-Produkte, The Events Calendar-Veranstaltungen oder Portfolio-Plugins, verwendet Custom Post Types unter der Haube. Das Verständnis von CPTs gibt Ihnen die volle Kontrolle über die Inhaltsstruktur auf Ihrer Website.

Registrieren eines Custom Post Type

Funktion register_post_type

Ein Custom Post Type wird mit der WordPress-Funktion register_post_type registriert, die innerhalb des init-Hooks aufgerufen wird. Die Funktion nimmt zwei Argumente entgegen – den Slug, der der interne Identifikator des Inhaltstyps ist, und ein Array von Argumenten, die das Verhalten und das Erscheinungsbild im Adminpanel definieren. Der Slug sollte im Singular sein, kleingeschrieben, ohne Leerzeichen und maximal 20 Zeichen. Beispielsweise wäre für Portfolio-Projekte der Slug project, für Immobilien property, für Rezepte recipe.

Wichtige Argumente

  • labels: Ein Array von Labels, die WordPress in der Admin-Oberfläche verwendet, einschließlich name für den Plural, singular_name für den Singular, add_new für die Hinzufügen-Schaltfläche, edit_item für den Titel der Bearbeitungsseite und search_items für die Suche.
  • public: Ob der Inhaltstyp öffentlich im Frontend zugänglich ist. Auf true setzen für Inhalte, die Besucher sehen sollen.
  • has_archive: Ob der Inhaltstyp eine Archivseite hat, die alle Einträge anzeigt, ähnlich der Blogseite für Posts.
  • supports: Welche WordPress-Funktionen für diesen Inhaltstyp verfügbar sind, einschließlich title, editor, thumbnail, excerpt, custom-fields, comments und revisions.
  • menu_icon: Ein Dashicons-Icon, das in der Admin-Sidebar angezeigt wird. WordPress kommt mit 300 plus Icons für verschiedene Zwecke.
  • rewrite: Definiert die URL-Struktur für diesen Inhaltstyp. Beispielsweise erstellt der Slug portfolio URLs wie ihrwebsite.com/portfolio/projektname.
  • show_in_rest: Aktiviert Gutenberg-Editor- und REST-API-Zugriff. Auf true setzen für moderne WordPress-Websites.

Advanced Custom Fields (ACF)

Warum ACF verwenden

WordPress Custom Fields sind der grundlegende Mechanismus zum Hinzufügen zusätzlicher Daten zu Inhalten, aber die native Oberfläche ist unpraktisch. Das Plugin Advanced Custom Fields transformiert die Erfahrung der Inhaltserstellung, indem es intuitive Felder hinzufügt, wie Text-Input, Textarea, Bildauswahl, Datepicker, Google-Maps-Feld, Relationship-Feld und vieles mehr. ACF ist der De-facto-Standard in der WordPress-Entwicklung mit über 2 Millionen aktiven Installationen und wird von Agenturen weltweit verwendet.

Feldtypen

ACF bietet über 30 Feldtypen, organisiert in Kategorien. Grundlegende Felder umfassen text, textarea, number, email, URL und password. Auswahlfelder sind select, checkbox, radio button, button group und true/false. Inhaltsfelder sind image, file, WYSIWYG-Editor, oEmbed für Video und gallery. Relationale Felder sind link, post object, page link, relationship und taxonomy. Layout-Felder sind group, repeater für sich wiederholende Sektionen, flexible content für modulare Layouts und clone. Das Repeater-Feld ist besonders mächtig, weil es die Erstellung sich wiederholender Strukturen wie einer Liste von Teammitgliedern, Sektionen mit Icons oder einer Spezifikationstabelle ermöglicht.

Anzeige von ACF-Feldern

ACF bietet einfache PHP-Funktionen zur Anzeige von Feldwerten in Themes. Die Funktion get_field gibt den Feldwert zurück, während the_field den Wert direkt ausgibt. Für Bilder gibt get_field ein Array mit URL, Breite, Höhe und Alt-Text zurück. Für Repeater-Felder verwenden Sie have_rows und the_row in einer while-Schleife zur Iteration durch alle Zeilen. Für Flexible Content verwenden Sie get_row_layout, um zu bestimmen, welches Layout vorliegt, und zeigen das entsprechende Template an. Die ACF-Dokumentation ist außerordentlich detailliert mit Beispielen für jeden Feldtyp.

Benutzerdefinierte Taxonomien

Was sind Taxonomien

Taxonomien sind Systeme zur Klassifizierung von Inhalten. WordPress hat standardmäßig zwei Taxonomien – Kategorien, die hierarchisch sind, und Tags, die flach sind. Für Custom Post Types werden in der Regel benutzerdefinierte Taxonomien benötigt. Beispielsweise können Portfolio-Projekte eine Taxonomie Projekttyp mit Werten wie Webdesign, Branding und Fotografie haben. Immobilien können Taxonomien für Standort, Immobilientyp und Preisspanne haben. Rezepte können Küche, Gerichtstyp und Schwierigkeitsgrad haben.

Registrieren von Taxonomien

Die Funktion register_taxonomy wird innerhalb des init-Hooks ähnlich wie register_post_type aufgerufen. Sie nimmt drei Argumente entgegen – den Taxonomie-Slug, ein Array von Post-Typen, auf die sie angewendet wird, und ein Array von Argumenten. Das Argument hierarchical bestimmt, ob die Taxonomie wie Kategorien mit Parent-Child-Beziehung oder wie Tags mit flacher Struktur funktioniert. Labels definieren, wie die Taxonomie im Adminpanel angezeigt wird. Das Rewrite-Argument steuert die URL-Struktur für Archivseiten der Taxonomie.

Hierarchische vs. flache Taxonomien

Hierarchische Taxonomien werden im Adminpanel als Checkbox-Liste mit der Möglichkeit, Parent- und Child-Begriffe zu erstellen, angezeigt. Verwenden Sie sie für Klassifizierungen mit klarer Struktur wie Standorte, bei denen Serbien Unterkategorien Belgrad, Novi Sad und Niš hat. Flache Taxonomien werden als Tag-Input-Feld angezeigt, in das Sie durch Kommas getrennte Begriffe eingeben. Verwenden Sie sie für flexible Tags wie Technologien, Fähigkeiten oder Merkmale, bei denen es keine hierarchische Beziehung gibt.

Template-Dateien für Custom Post Types

WordPress-Template-Hierarchie

WordPress verwendet eine spezifische Hierarchie, um zu bestimmen, welche Template-Datei zur Anzeige von Inhalten verwendet wird. Für einen Custom Post Type mit dem Slug project sucht WordPress Dateien in folgender Reihenfolge. Für einzelne Einträge sucht es single-project.php, dann single.php, dann singular.php, dann index.php. Für die Archivseite sucht es archive-project.php, dann archive.php, dann index.php. Erstellen Sie spezifische Template-Dateien für Ihren CPT, um die volle Kontrolle über die Anzeige zu haben.

Single-Template

Das Single-Template zeigt einen einzelnen Eintrag Ihres Custom Post Type. Beispielsweise zeigt single-project.php für ein Portfolio-Projekt den Projekttitel, das Featured Image, die Beschreibung, ACF-Felder wie Kunde, Datum, Projekt-URL und Bildergalerie. Verwenden Sie die WordPress-Schleife the_loop für den Zugriff auf Post-Daten und ACF-Funktionen für benutzerdefinierte Felder. Fügen Sie eine Navigation zwischen Projekten mit previous_post_link und next_post_link und eine Sektion mit verwandten Projekten basierend auf der Taxonomie hinzu.

Archive-Template

Das Archive-Template zeigt eine Liste aller Einträge mit Filterung nach Taxonomie. Beispielsweise zeigt archive-project.php ein Grid von Portfolio-Projekten mit Thumbnail, Titel, Kategorie und Kurzbeschreibung. Fügen Sie Filter-Schaltflächen für Taxonomien hinzu, damit Besucher Projekte nach Typ filtern können. Die Paginierung ermöglicht die Navigation durch eine große Anzahl von Einträgen. Für eine erweiterte Anzeige verwenden Sie WP_Query mit benutzerdefinierten Argumenten zum Sortieren, Filtern und Gruppieren von Einträgen.

WP_Query für Custom Post Types

Benutzerdefinierte Abfragen

Die Klasse WP_Query ermöglicht die Erstellung benutzerdefinierter Abfragen zum Abrufen von Custom-Post-Type-Einträgen mit spezifischen Kriterien. Das Argument post_type definiert, welchen Inhaltstyp Sie abrufen. posts_per_page steuert die Anzahl der Ergebnisse. orderby und order definieren die Sortierung nach Datum, Titel, menu_order oder Meta-Wert. tax_query filtert nach Taxonomie mit der Möglichkeit, mehrere Taxonomien mit AND- oder OR-Operator zu kombinieren. meta_query filtert nach Custom-Field-Werten mit Operatoren wie gleich, größer als, kleiner als, LIKE und BETWEEN.

Abfragebeispiele

Zum Anzeigen der letzten 6 Portfolio-Projekte aus der Kategorie Webdesign, sortiert nach Datum, verwenden Sie WP_Query mit den Argumenten post_type project, posts_per_page 6, tax_query mit der Taxonomie project_type und dem Begriff web-dizajn. Zum Anzeigen von Immobilien mit Preis zwischen 50.000 und 100.000 Euro verwenden Sie meta_query mit dem Schlüssel cena, dem Typ NUMERIC und dem Operator BETWEEN. Setzen Sie das globale Post-Objekt nach benutzerdefinierten Abfragen immer mit wp_reset_postdata zurück, um die WordPress-Hauptschleife nicht zu beschädigen.

REST API und Gutenberg

REST-API-Zugriff

Mit dem Argument show_in_rest auf true gesetzt, erhält Ihr Custom Post Type automatisch einen REST-API-Endpoint unter der Adresse ihrwebsite.com/wp-json/wp/v2/slug. Dies ermöglicht das Abrufen, Erstellen, Aktualisieren und Löschen von Einträgen über API-Aufrufe, was die Grundlage für headless WordPress-Ansätze und JavaScript-Frontends ist. ACF-Felder können in der REST API mit dem Plugin ACF to REST API oder durch manuelle Registrierung von Feldern mit der Funktion register_rest_field freigegeben werden.

Gutenberg-Blöcke

Mit aktiviertem show_in_rest verwendet Ihr CPT den Gutenberg-Editor anstelle des klassischen Editors. Sie können benutzerdefinierte Gutenberg-Blöcke speziell für Ihren Inhaltstyp mit ACF Blocks erstellen, das die Erstellung von Blöcken mit PHP-Templates und ACF-Feldern ohne React-Kenntnisse ermöglicht. Beispielsweise können Sie für ein Portfolio einen Block erstellen, der ein Grid ausgewählter Projekte anzeigt, oder für Rezepte einen Block, der eine Zutatenliste und Zubereitungsschritte mit benutzerdefiniertem Stil formatiert.

Best Practices für Custom Post Types

Benennung und Organisation

Verwenden Sie ein Präfix für den Slug Ihres CPT, um Konflikte mit anderen Plugins und WordPress-Updates zu vermeiden. Verwenden Sie beispielsweise statt project meinplugin_project. Gruppieren Sie die Registrierung von CPTs und Taxonomien in einer separaten Klasse oder Datei zur einfacheren Wartung. Verwenden Sie Konstanten für Slugs, um Tippfehler zu vermeiden. Dokumentieren Sie jeden CPT mit einer Beschreibung des Zwecks, einer Liste von ACF-Feldern und Taxonomien.

Leistung

Jeder Custom Post Type fügt Datenbankabfragen hinzu, vermeiden Sie also die Erstellung zu vieler CPTs, wenn Taxonomien dasselbe Ziel erreichen können. Statt separater CPTs für Blog, News und Tutorials verwenden Sie beispielsweise Standard-Posts mit Kategorien. ACF-Felder werden als Post-Meta in der Datenbank gespeichert – für Felder, die häufig in Abfragen verwendet werden, ziehen Sie die Erstellung einer benutzerdefinierten Tabelle für bessere Leistung in Betracht. Speichern Sie komplexe WP_Query-Abfragen mit der Transient API zwischen, um die Datenbankbelastung zu reduzieren. Bei unseren WordPress-Hosting-Lösungen bieten wir eine optimierte Umgebung für Websites mit Custom Post Types und erweiterten Abfragen mit ausreichend PHP-Speicher und schnellen SSD-Festplatten für responsives Admin-Erlebnis.

Fazit

Custom Post Types verwandeln WordPress von einer Blog-Plattform in ein mächtiges CMS, das jeden Inhaltstyp verwalten kann. Die Kombination der Funktion register_post_type zur Erstellung von Inhaltstypen, ACF für benutzerdefinierte Felder, benutzerdefinierter Taxonomien zur Klassifizierung und Template-Dateien zur Anzeige gibt Ihnen die volle Kontrolle über Struktur und Präsentation des Inhalts. Dieses Wissen ist die Grundlage für die professionelle WordPress-Entwicklung (starten Sie mit unserem Leitfaden) und eröffnet Möglichkeiten zur Erstellung komplexer Websites wie Portfolio-Präsentationen, Produktkataloge, Verzeichnisse und Geschäftsanwendungen.

BeoHosting Team

10+ Jahre Erfahrung — Spezialisten für Webhosting und Infrastruktur

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Zuletzt aktualisiert: