Der ultimative Leitfaden für benutzerdefinierte WordPress-Beitragstypen

Veröffentlicht: 2024-03-26

Vor mehr als einem Jahrzehnt traf ich die lebens- und berufsverändernde Entscheidung, mich ausschließlich auf die Verwendung von WordPress als Veröffentlichungsplattform und dem CMS zu konzentrieren, für das ich Plugins erstelle. Die Hauptgründe waren die hervorragende Dokumentation, darunter unzählige Beiträge mit Snippets und Tutorials, und die einfache Erweiterbarkeit von WordPress. Für meine damaligen Anwendungsfälle waren benutzerdefinierte Beitragstypen die wichtigste Funktion zur Erweiterung von WordPress.

Custom Post Types (CPTs) wurden hauptsächlich mit WordPress Version 3 im Jahr 2010 verbessert und werden auf vielfältige Weise verwendet. Ich bin sicher, dass Sie sie kennengelernt haben, ohne es zu wissen. Lassen Sie mich Ihnen einen Überblick über CPTs geben, konkrete Beispiele dafür, wie ich sie im Laufe der Zeit verwendet habe, wie Sie sie selbst einrichten und wie Sie mit verwandten Plugins noch mehr erreichen können.

Was sind benutzerdefinierte Beitragstypen?

Der WordPress-Kern enthält verschiedene Beitragstypen. Am offensichtlichsten sind Beiträge, Seiten und Anhänge.

In WordPress 6.4 gibt es vier weitere:

  • Überarbeitungen
  • Navigationsmenüs
  • Blockvorlagen
  • Vorlagenteile

Interessante Tatsache: Kommentare sind kein Beitragstyp. Ich denke, wenn WordPress ursprünglich nicht eine Blogging-Plattform mit Kommentaren als zentralem Bestandteil wäre, würde man sie heutzutage auch als Beitragstyp behandeln.

Wie dies vielleicht vermuten lässt, sind Beitragstypen nicht immer offensichtlich und nicht unbedingt etwas, das im Frontend sichtbar ist und das wir als „Inhalt“ bezeichnen würden. Sie stellen eher eine Gruppe verwandter Elemente in der Datenbank dar.

Sie können weitere dieser „Dinge“ hinzufügen, die dann als „benutzerdefinierte“ Beitragstypen bezeichnet werden.

Es ist kein offizieller WordPress-Begriff, aber ich mag den Ausdruck „Benutzerdefinierte „Inhalts“-Typen“ für jeden sichtbaren benutzerdefinierten Beitragstyp. Auf einige Beispiele werde ich später noch eingehen.

Warum einen benutzerdefinierten Beitragstyp verwenden?

WP Mayor hat im Laufe der Zeit mehrere benutzerdefinierte Beitragstypen verwendet, beispielsweise den Lifetime Deals-Typ, den Sie gerade sehen können.

Ich persönlich habe benutzerdefinierte Beitragstypen für viele Dinge verwendet.

Am häufigsten sind separate Inhaltsbereiche auf Websites. Dies ist am sinnvollsten, wenn dieser Inhalt anders angezeigt und verhalten soll als integrierte Beiträge und Seiten.

Stellen wir uns vor, dass WP Mayor auch einen eigenen Beitragstyp „News“ hätte. Allein die Registrierung dieses benutzerdefinierten Beitragstyps hätte folgende Vorteile:

  • Ein eindeutiger „News“-Eintrag im Menü von WP Admin.
  • Die Möglichkeit, Benutzern und Benutzerrollen unterschiedliche Fähigkeiten dieses Typs zu gewähren.
  • Verfügen Sie über verschiedene Vorlagen für die Anzeige einzelner Nachrichten im Frontend.
  • Ein separates Archiv und Feed für Neuigkeiten.
  • Zusätzliche Beitragsmetadaten werden nur mit Nachrichten gespeichert und für diese angezeigt.

Ich habe auch benutzerdefinierte Beitragstypen für Inhaltselemente in verschiedenen Plugins verwendet. Ich habe einmal eine Buchungsplattform für Ferienhäuser erstellt, bei der Häuser, Reservierungen und Zahlungen jeweils einen eigenen benutzerdefinierten Beitragstyp mit einzigartigen Attributen darstellten. Das ist etwas, was die meisten E-Commerce-Plugins für WordPress auch tun.

In einem anderen Fall wollte ich den Inhalt aller ausgehenden E-Mails protokollieren. Deshalb habe ich einen Beitragstyp „Protokoll“ mit dem E-Mail-Inhalt und allen angehängten Metadaten erstellt, der nur mit den entsprechenden Funktionen im WordPress-Backend sichtbar war.

Schließlich verwendete das von mir ursprünglich entwickelte Advanced Ads-Plugin ein CPT zum Speichern des Anzeigeninhalts.

Dies sind nur einige Beispiele für benutzerdefinierte Beitragstypen. Ich weiß, dass ich vergessen habe, viele andere spannende Anwendungsfälle zu erwähnen, die mir im Laufe der Jahre begegnet sind.

Der Hauptvorteil von CPTs in WordPress besteht darin, dass sie nur ein paar Codezeilen oder eine schnelle Einrichtung über ein Plugin erfordern und WordPress einen Großteil der Logik übernimmt, die Sie zum Verwalten und Anzeigen auf Ihrer Website benötigen. Kommen wir also gleich zur Erstellung benutzerdefinierter WordPress-Beitragstypen.

Erstellen eines benutzerdefinierten Beitragstyps

Benutzerdefinierte Beitragstypen können manuell oder über ein Plugin erstellt werden.

Wenn Sie keine Programmiererfahrung haben, können Sie mit Plugins benutzerdefinierte Beitragstypen viel einfacher erstellen.

Ein Nachteil der Verwendung eines Plugins besteht darin, dass Ihr benutzerdefinierter Beitragstyp nicht mehr vorhanden ist, sobald Sie das Plugin löschen. Während es wahrscheinlich noch in der Datenbank vorhanden ist, weiß WordPress weder im Frontend noch im Backend mehr davon.

Als Entwickler, der dies schon Dutzende Male gemacht hat, bevorzuge ich immer noch die manuelle Methode. Allerdings gebe ich gerne zu, dass ich auch Plugins mit schönen UIs verwende, wenn der benutzerdefinierte WordPress-Beitragstyp vorübergehend verwendet wird oder um einen Showcase für einen Kunden zu erstellen.

Entscheidungen für benutzerdefinierte Beitragstypen

Trotz der Methode, die wir zum Erstellen unseres benutzerdefinierten Beitragstyps verwenden, müssen wir zunächst einige Entscheidungen treffen. Während Sie theoretisch jede davon später ändern könnten, könnte dies erhebliche Auswirkungen auf Ihre Website und Ihr Setup haben, daher ist es am besten, im Voraus darüber nachzudenken.

Öffentlich oder nicht?

Die wichtigste Entscheidung über benutzerdefinierte Beitragstypen ist, wer sie sehen und mit ihnen interagieren soll. Mit Ihrem benutzerdefinierten Code oder innerhalb eines Plugins können Sie wählen, ob das CPT im Frontend sichtbar ist, einschließlich der direkt zugänglichen Archive und Einzelseiten, und ob Benutzer es über die Suche finden. Sollte es mit seinem Menüpunkt im Backend Ihrer WordPress-Site erscheinen?

Während ein „News“-CPT wahrscheinlich vollständig im Frontend sichtbar ist, ist ein internes Protokoll oder etwas wie Zahlungen möglicherweise auf Benutzer mit einer bestimmten Rolle in Ihrem WordPress-Backend beschränkt.

Hierarchisch

Möglicherweise ist Ihnen aufgefallen, dass sich die Beitragstypen „WordPress-Beiträge“ und „Seiten“ etwas unterschiedlich verhalten. Seiten haben kein Archiv im Frontend, aber Sie können über- und untergeordnete Seiten haben.

Letzteres wird als „Hierarchie“ bezeichnet, die auch beim Erstellen eines eigenen Beitragstyps definiert wird.

Bei hierarchischen Beitragstypen bietet die Bearbeitungsseite die Möglichkeit, eine übergeordnete Seite und eine Reihenfolge auszuwählen.

Der Abschnitt „Seitenattribute“ im WordPress-Editor zeigt Optionen für die Seitenhierarchie.
Hierarchieoptionen beim Bearbeiten einer Seite.

Bei der automatischen Erstellung von Menüs oder Listen aus Seiten können die Reihenfolge und die übergeordnete Seite von Bedeutung sein. Die Hierarchie ist auch im URL-Slug sichtbar. Wenn meine Seite „Fehlerbehebung“ mit „Dokumentation“ als übergeordneter Seite wäre, könnte die endgültige URL documentation/troubleshooting lauten.

Tipp: Wenn Sie ein CPT mit einer tieferen Hierarchie haben, empfehle ich die Verwendung des Nested Pages-Plugins, um Beiträge schnell in der richtigen Reihenfolge anzuordnen.

Block- oder klassischer Editor

Beim Erstellen eines benutzerdefinierten Beitragstyps werden Sie gefragt, ob dieser in der „REST API“ angezeigt werden soll oder nicht. Dieser Fachbegriff hat eine entscheidende Bedeutung: Er bestimmt, ob Ihr CPT den Blockeditor oder die klassische Editoransicht verwendet.

Als Faustregel gilt, dass die Verwendung des Blockeditors sinnvoll ist, wenn Ihr Beitragstyp regulären Inhalten ähnelt und Sie WordPress-Blöcke verwenden möchten. Jeder benutzerdefinierte Beitragstyp, der keinen großen Teil des Bildschirms für den Inhalt benötigt, sollte den klassischen Editor wählen. Daher sollte es nicht über die REST-API bereitgestellt werden.

URL-Slugs und Struktur

Eine weitere wichtige Entscheidung, die Sie treffen müssen, ist die Benennung des CPT-Slugs. Auf unseren Beitragstyp „News“ wird möglicherweise in der URL als „ news verwiesen. Wenn Sie jedoch ausgefallenere interne Namen haben, möchten Sie möglicherweise eine Kurzform für die Frontend-URLs wählen.

Dies könnte eine wichtige Entscheidung für Ihre SEO sein. Nehmen Sie sich also ein paar Minuten Zeit, um darüber nachzudenken.

Unterstützte Elemente

Abhängig vom Beitragstyp, den Sie erstellen, möchten Sie möglicherweise auch im Voraus entscheiden, ob Sie die Unterstützung für die folgenden Elemente aktivieren möchten:

  • Titel (standardmäßig aktiviert)
  • Der Editor wird angezeigt (standardmäßig aktiviert)
  • Kommentare
  • Überarbeitungen
  • Autoren
  • Auszüge
  • Miniaturansichten

Es gibt viele weitere Optionen zur Feinabstimmung. Die oben genannten Punkte sind jedoch die wichtigsten, die Sie berücksichtigen sollten, bevor Sie unseren benutzerdefinierten WordPress-Beitragstyp verwenden.

Erstellen Sie einen benutzerdefinierten Beitragstyp mit einem Plugin

Schauen wir uns vor diesem Hintergrund die Erstellung benutzerdefinierter Beitragstypen mit einem Plugin an und machen Sie das Gleiche dann manuell.

Ich verwende eine der beliebtesten kostenlosen Versionen von wordpress.org: Custom Post Type UI (CPTUI) von WebDevStudios.

Ihre Benutzeroberfläche ist ziemlich einfach und bietet alle Optionen, die man von einem Plugin für benutzerdefinierte Beitragstypen erwarten würde. Es macht jedoch auch deutlich, dass benutzerdefinierte Beitragstypen immer noch ein abstraktes Konzept sind und kein Feature, an dem ein gewöhnlicher WordPress-Publisher herumbasteln sollte, ohne die Optionen besser zu kennen.

Erster Bildschirm mit Optionen beim Erstellen eines neuen WordPress Custom Post Type mit dem Custom Post Type UI-Plugin.
Erstellen eines neuen CPT mit dem Custom Post Type UI-Plugin.

Tipp: Ich persönlich bin bei den „öffentlichen“ Optionen für meine CPTs konservativ und schränke sie so weit wie möglich ein, wenn es darum geht, wer sie im Frontend sehen und wer sie im Backend ändern kann. Bei Bedarf können Sie später jederzeit weiteren Zugriff gewähren.

Vorteile der Benutzeroberfläche für benutzerdefinierte Beitragstypen

Es gibt ein paar Dinge, die mir an diesem Plugin gefallen, die andere vielleicht haben oder nicht.

Normalerweise erstelle ich meine CPTs manuell, daher weiß ich, dass das Schreiben der Etiketten viel Zeit in Anspruch nimmt. Es gibt etwa drei Dutzend, wenn Sie alle anpassen möchten, um den Namen Ihres CPT zu erwähnen. Wie Sie im Screenshot oben sehen können, verfügt das Plugin „Custom Post Type UI“ über eine Option, um diese Labels automatisch für Sie auszufüllen. Sie können diese später noch in der Benutzeroberfläche anpassen.

Als Nächstes kann ich meinen benutzerdefinierten Beitragstyp speichern und ihn später bearbeiten . Ich kann sogar den Slug ändern und das Plugin migriert dann alle Beiträge dieses Typs . Ich würde zwar versuchen, eine Situation zu verhindern, in der ich das brauchen würde, aber es ist gut zu wissen, dass es möglich ist und vom Plugin gehandhabt wird.

Die benutzerdefinierte Benutzeroberfläche für Beitragstypen bietet einen Überblick über meine Beitragstypen . Es fühlt sich zwar etwas überwältigend an, ist aber viel einfacher zu überprüfen als benutzerdefinierter Code. Mir gefällt auch die Liste der Vorlagen in der letzten Spalte.

Eine Übersicht über benutzerdefinierte WordPress-Beitragstypen, die mit dem Custom Post Type UI-Plugin erstellt wurden.
Benutzerdefinierter Beitragstyp aufgeführt.

Diese Vorlagen sind Teil der Magie der benutzerdefinierten Beitragstypen von WordPress. Wenn unser Nachrichten-CPT die Slug news verwenden würde, würde WordPress automatisch nach einer Datei namens archive-news.php in Ihrem Theme suchen, um die Archivseite dieses Beitragstyps oder single-news.php für eine einzelne Nachrichtenseite zu rendern. Weitere Informationen finden Sie unter Vorlagenhierarchie.

Code mit CPTUI generieren

Die Funktion, die mich schließlich dazu brachte, Custom Post Type UI zu empfehlen, war das Tool zum Exportieren des CPT in PHP-Code . Unter „CPT UI > Tools > Get Code“ finden Sie den PHP-Code, den Sie in Ihrem Plugin oder in functions.php verwenden können. Ein großes Lob an die Plugin-Entwickler dafür, dass sie keine Leute einsperren.

Dies macht CPTUI zu einem idealen Tool für Entwickler, da wir über die Schnittstelle schnell einen benutzerdefinierten Beitragstyp einrichten und dann den PHP-Code zur Verwendung erhalten können. Wir können es unseren Kunden sogar ermöglichen, es auf einer Testseite einzurichten – mit allen Etiketten usw. – und es dann dorthin zu migrieren, wo wir es benötigen.

Die einzige Option, die ich im Plugin nicht finden konnte, besteht darin, den benutzerdefinierten Beitragstyp mit all seinen Entitäten zu entfernen. Wenn Sie ein Plugin oder einen Code löschen, bleiben die benutzerdefinierten Beiträge im Allgemeinen in der Datenbank. Es gibt jedoch spezielle Plugins, um das zu bereinigen.

Code verwenden

Wenn Sie Entwickler sind und einen benutzerdefinierten Beitragstyp mithilfe von Code implementieren möchten, möchte ich Sie auf die entsprechenden Abschnitte in der WordPress-Dokumentation verweisen.

Die Kernfunktion zum Registrieren eines neuen benutzerdefinierten Beitragstyps ist die Funktion register_post_type. Mit seinen Parametern können Sie alle oben genannten Optionen festlegen.

Alle Beitragstypen werden in der Tabelle wp_posts in Ihrer Datenbank gespeichert. Das Feld post_type bestimmt, zu welchem ​​Eintrag ein Beitragstyp gehört.

Sie können Beitragsmetadaten verwenden, wenn es bei Ihrem benutzerdefinierten Beitragstyp um mehr als nur Inhalte geht. Diese Daten werden in wp_postmeta gespeichert.

Einige Plugins verwenden übrigens benutzerdefinierte Tabellen zur Verwaltung von Inhaltstypen. Gehen Sie diesen Weg nicht, es sei denn, Sie müssen es wirklich, da Sie dann nicht alle integrierten WordPress-Features und -Funktionen nutzen könnten, die mit der Custom Post Types API geliefert werden.

Erweitern Sie benutzerdefinierte Beitragstypen

Wenn Ihr benutzerdefinierter Beitragstyp öffentlich ist, möchten Sie ihn möglicherweise noch weiter anpassen. Hier sind einige Optionen.

Benutzerdefinierte Felder und Meta-Boxen

Fortgeschrittenere CPTs wie Events oder Shop-Artikel erfordern mehr als nur Inhalte. Hier kommen benutzerdefinierte Felder ins Spiel. Sie bieten Eingabefelder, um Ihre Daten auf verschiedene Weise zu strukturieren. Beispielsweise könnte ein Beitragstyp „Veranstaltung“ ein Anfangs- und Enddatum oder einen Veranstaltungsort erfordern, damit Ereignisse angezeigt und gefiltert werden können.

Während Sie benutzerdefinierte Felder und Meta-Boxen mit benutzerdefiniertem Code hinzufügen können, ist das sehr bekannte Plugin „Advanced Custom Fields“ ein hervorragendes Plugin dafür. Es bietet so viele Optionen und ist so gut gepflegt, dass nicht einmal ich als Entwickler benutzerdefinierte Felder auf meinen eigenen Websites programmieren würde.

Benutzerdefinierte Taxonomien

Da der standardmäßige Beitragstyp „Beiträge“ nach „Kategorien“ und „Tags“ sortiert werden kann, können Sie auch Taxonomien für Ihren benutzerdefinierten Beitragstyp registrieren.

Das oben empfohlene Plugin für die benutzerdefinierte Beitragstyp-Benutzeroberfläche hilft Ihnen auch bei der Erstellung.

Fähigkeitsmanagement

Sie können Plugins wie „Mitglieder“ verwenden, um eine neue Rolle für Autoren auf Ihrer Website zu erstellen, die nur Ihren neuen benutzerdefinierten Beitragstyp erstellen und ändern oder vorhandene zugehörige Benutzerrollen anpassen können. Dies wird empfohlen, wenn Ihr redaktioneller Workflow für jeden Beitragstyp unterschiedlich ist.

Beitragstypen wechseln

Ich organisiere derzeit Inhalte in einer internen Wissensdatenbank neu, die mit WordPress erstellt wurde. Beiträge und Seiten verfolgen hier ganz unterschiedliche Ziele. Einige von ihnen haben ihre Ziele geändert, daher brauchte ich eine Lösung, um den Beitragstyp zu ändern.

Während ich dies bei einem öffentlichen Beitragstyp nicht auf die leichte Schulter nehmen würde, ist es kein Problem, dies auf einer nicht öffentlichen Website mit ähnlichen Beitragstypen zu tun. Um dies zu erreichen, habe ich den Post Type Switcher installiert, ein hervorragendes Plugin, mit dem Sie das ohne großen Aufwand erledigen können. Nach der Installation fügt das Plugin dem Bildschirm „Beitrag bearbeiten“ einen Abschnitt „Beitragstyp“ hinzu. Über diese Schnittstelle können Sie die Beitragstypen nach Bedarf ändern.

Abschluss

Ich halte benutzerdefinierte Beitragstypen immer noch für eine entscheidende Funktion, die WordPress im letzten Jahrzehnt und darüber hinaus zum Aufschwung verholfen hat. Es ist die Grundlage, die unser Lieblings-CMS von einer einfachen Blogging-Plattform zu einem vielseitigen Tool für die Verwaltung von Veranstaltungen oder Online-Einkäufen gemacht hat.

Beim Erstellen von Plugins, die auf vielen Websites verwendet werden, stoße ich immer noch auf Code zum Erstellen neuer Beitragstypen. Aber wenn ich Websites für mich und Kunden erstelle, verwende ich Plugins. Sie machen das Erstellen und Ändern benutzerdefinierter Beitragstypen viel einfacher und verfügen über eine viel bessere Benutzeroberfläche, als ich sie jemals erstellen könnte.