Erstellen Sie manuell benutzerdefinierte WordPress-Beitragstypen
Veröffentlicht: 2020-12-15In unserem ersten Artikel über benutzerdefinierte WordPress-Beitragstypen haben wir erläutert, wie Sie mit dem hervorragenden Plugin Custom Post Type UI ganz einfach Ihre eigenen benutzerdefinierten Beitragstypen erstellen können. In diesem zweiten Artikel sehen wir uns an, wie Sie dies manuell tun können (dh durch Codierung). Warum also, wenn es so einfach ist, einen benutzerdefinierten Beitragstyp mit einem Plugin zu erstellen, würden Sie dies auf lange Sicht tun wollen?
Die Verwendung eines Plugins zum Hinzufügen benutzerdefinierter Funktionen kann sehr gut funktionieren (und die riesige Bibliothek von Plugins, die zur Erweiterung der Funktionalität beitragen, ist einer der Gründe, warum WordPress so beliebt ist). Es können jedoch Probleme auftreten, wenn ein Plugin nicht mehr unterstützt wird (da der Plugin-Autor sich dafür entscheidet, es nicht weiter zu aktualisieren und zu entwickeln). In diesem Fall könnten Sie feststellen, dass die vom Plugin bereitgestellte Funktionalität jetzt nicht mehr funktioniert, was ein ernsthaftes Problem darstellen könnte, wenn Ihre Website um eine bestimmte Funktion herum aufgebaut ist, die von einem Plugin bereitgestellt wird.
Wenn Sie also Funktionen direkt codieren können, anstatt sich auf ein Plugin zu verlassen, ist dies eine gute Option.
Heute führen wir Sie durch, wie Sie Ihren eigenen benutzerdefinierten Beitragstyp erstellen können, ohne ein Plugin zu verwenden. Wir werden auch einige grundlegende Konfigurationen demonstrieren, wie das Definieren der CPT-Labels (Custom Post Type), zusammen mit Dingen wie dem Aktivieren von vorgestellten Bildern und mehr. Wir werden dann eine benutzerdefinierte Taxonomie hinzufügen und schließlich sehen wir, wie Sie den Inhalt Ihres benutzerdefinierten Beitragstyps im Frontend Ihrer Website anzeigen können.
Erstellen Sie den benutzerdefinierten Beitragstyp
Wenn Sie unserem vorherigen Tutorial gefolgt sind und noch das CPT-UI-Plugin installiert haben, deaktivieren Sie dies bitte, damit keine Verwirrung entsteht, wenn Sie Ihr neues CPT manuell erstellen.
Wie zuvor werden wir Rezepte als Schwerpunkt für unseren neuen benutzerdefinierten Beitragstyp verwenden. Um zu beginnen, müssen wir als erstes den benutzerdefinierten Beitragstyp erstellen, indem wir den richtigen Code in unsere Datei functions.php
einfügen.
Grundeinstellung
Im Moment erstellen wir unsere Beitragstypen mit minimalen Argumenten, indem wir die von WordPress bereitgestellte Funktion register_post_type
verwenden.
register_post_type( string $post_type, array|string $args = array() )
Die Struktur dieser Funktion erfordert zwei Parameter. Der Beitragstypschlüssel, der nur alphanumerische Kleinbuchstaben, Bindestriche und Unterstriche und einen zweiten optionalen Parameter, die $args
für zusätzliche Argumente, enthalten sollte. Wir werden uns in diesem Artikel nur auf einige dieser Argumente konzentrieren, aber wenn Sie noch etwas experimentieren möchten, finden Sie die vollständige Liste der verfügbaren Argumente in der zugehörigen WordPress-Dokumentation.
Für diesen Artikel verwenden wir den folgenden Code.
function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );
Wenn Sie mitmachen, starten Sie Ihren bevorzugten Texteditor und fügen Sie diesen Code zu Ihrer Datei functions.php
hinzu.
Sie werden in diesem Code sehen, dass wir das Array „labels“ verwendet haben, um die Singular- und Pluralnamen für unseren Beitragstyp zu definieren, das Argument show_in_rest, um den Gutenberg-Editor für die show_in_rest
sowie das public
Argument zu aktivieren.
Das public
Argument macht eigentlich drei verschiedene Dinge. Es zeigt das benutzerdefinierte Post-Menü des Administrators, es enthält das benutzerdefinierte Post-Menü in den Ergebnissen der Website-Suche und zeigt auch das benutzerdefinierte Post-Menü im WordPress-Admin-Menübereich. Diese Optionen können mit den Argumenten show_in_nav_menus
, exclude_from_search
bzw. show_ui
separat geändert werden. Die Standardwerte show_in_nav_menus
und show_ui
erben den public
Wert, aber der Standardwert exclude_from_search
ist das Gegenteil des public
Werts.
Wir haben auch das Argument supports
verwendet, das definiert, welche Funktionen ein benutzerdefinierter Post unterstützt. Im Moment werden wir nur „Titel“, „Editor“ und „Miniaturansicht“ aktivieren (einige weitere Optionen werden in zukünftigen Artikeln gezeigt).
Nachdem dieses Code-Snippet zu unserer Datei functions.php hinzugefügt und gespeichert wurde (sichern Sie immer Ihre Website, bevor Sie solche Arbeiten durchführen!), sehen Sie jetzt einen brandneuen Menüpunkt im WordPress-Adminbereich (in diesem Fall „Rezepte“).
Wenn wir als nächstes zu Aussehen> Menüs gehen, können wir bestätigen, dass die Rezepte als Option hinzugefügt wurden. Dies bestätigt, dass die Dinge so funktionieren, wie sie sein sollten.
Hinweis: Wenn Sie zum Menübereich gehen und den Menüpunkt „Rezepte“ nicht sehen, ist es möglich, dass er in den Bildschirmoptionen nicht aktiviert wurde. Gehen Sie dazu ganz nach oben auf der Seite, öffnen Sie die Leiste mit den Bildschirmoptionen und vergewissern Sie sich, dass Ihr neuer benutzerdefinierter Beitragstyp (in diesem Beispiel Rezepte) aktiviert ist.
Fügen Sie Ihre Taxonomie für Ihren benutzerdefinierten Beitragstyp hinzu
WordPress-Taxonomien existieren, um ähnliche Inhalte zu gruppieren. An diesem Punkt haben wir unsere benutzerdefinierten „Rezepte“-Beiträge, aber wir haben nicht die Möglichkeit, sie so zu kategorisieren, wie wir es möchten. Daher wäre es sinnvoll, eine separate Kategorie für unsere Rezepte zu erstellen. Lassen Sie uns zum Beispiel Rezepte nach der Art der Küche gruppieren, zu der sie gehören.
Um dies zu erreichen, müssen wir eine neue „Cuisines“-Taxonomie registrieren und sie dann mit dem Beitragstyp „Rezepte“ verknüpfen.
Um die Taxonomie hinzuzufügen, verwenden wir die von WordPress bereitgestellte Funktion register_taxonomy()
(siehe eine Liste der Argumente hier).
register_taxonomy( string $taxonomy, $object_type, $args )
Die obligatorischen Argumente sind $taxonomy
, der Taxonomieschlüssel, und $object_type
, der Objekttyp oder das Array von Objekttypen, mit dem die Taxonomie verknüpft werden soll, in unserem Fall „Rezepte“. In den $arg
Parameter werden wir auch die notwendigen Werte zum Kennzeichnen unserer Verwaltungsinstanzen unserer Taxonomie aufnehmen.
function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );
Der boolesche show_admin_column
definiert, ob die Taxonomie als Spalte in der Rezeptverwaltungslistentabelle sichtbar ist oder nicht.
Wenn Sie jetzt zu Ihrem WordPress-Adminbereich zurückkehren und diesen aktualisieren, sollten Sie die Taxonomie „Küchen“ im Menü „Rezepte“ sehen.
Sie sollten auch eine Spalte „Küchen“ in der Tabelle „Rezepte“ sehen:
Anzeigen Ihres benutzerdefinierten Beitragstypinhalts im Frontend
An diesem Punkt sollten Sie in der Lage sein, Ihre benutzerdefinierten Posts sowie die von Ihnen erstellten benutzerdefinierten Taxonomien in Ihr Menü aufzunehmen. Um dies zu demonstrieren, haben wir zwei Küchen „Mediterran“ und „Mexikanisch“ in unser Menü „Küchen-Taxonomie“ aufgenommen. Diese erscheinen dann als Menüoptionen in unserem WordPress-Menü, sodass wir ein Rezeptmenü wie das unten gezeigte erstellen können.
Wenn Sie einen Rezeptbeitrag erstellt und mit einer Kategorie „Küche“ verknüpft haben, sollten diese jetzt angezeigt werden, wenn Sie die verknüpfte Küche aus dem Menü auswählen.
Hinweis: Wenn Sie versuchen, einen Rezeptbeitrag im Frontend anzuzeigen, erhalten Sie möglicherweise die Meldung „404 nicht gefunden“. Dies kann passieren, weil der Permalink-Cache geleert werden muss. Dies ist einfach zu tun. Gehen Sie einfach zu Einstellungen > Permalinks und speichern Sie erneut.
Jetzt erstellen wir einen weiteren Menüpunkt für „Alle Rezepte“ mit benutzerdefiniertem Code, um ein Archiv aller unserer Rezepte anzuzeigen.
Bevor wir fortfahren, sollten wir jedoch sicherstellen, dass unser Archivargument für benutzerdefinierte Beiträge auf „true“ gesetzt ist. Gehen Sie zurück zu Ihrem Code in functions.php
wo Sie den Rezepttyp registrieren und 'has_archive' => true,
im Argumentarray hinzufügen.
function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );
Gehen Sie danach zu Einstellungen > Permalinks und speichern Sie erneut, um sicherzustellen, dass Sie keinen 404-Fehler erhalten (wie bereits erwähnt).
Fügen Sie nun auf der Menükonstruktionsseite den benutzerdefinierten Link für die Archivseite hinzu. Der Linktext könnte „Alle Rezepte“ lauten.
Die URL sollte „/?post_type=recipes“ lauten, wenn Ihre Permalinks auf „Plain“ gesetzt sind, und „/recipes/“, wenn Permalinks auf „Post name“ gesetzt sind.
Fügen Sie den Menüpunkt hinzu, gehen Sie zu Ihrer Website und klicken Sie auf den Link. Sie sollten nun alle Rezeptbeiträge in einer Archivansicht sehen.
Weiterführende Lektüre
- Erstellen Sie benutzerdefinierte WordPress-Beitragstypen mit einem Plugin
- Benutzerdefinierte WordPress-Beitragstypen – Weiterentwicklung
- Erstellen Sie benutzerdefinierte WordPress-Beitragstypen mit Ihrem eigenen Plugin!
Fazit
Die Herangehensweise an benutzerdefinierte Beitragstypen, die wir in diesem Artikel untersucht haben, mag zunächst verwirrend erscheinen (insbesondere im Vergleich zu der Leichtigkeit, benutzerdefinierte Beitragstypen mithilfe eines Plugins zu erstellen). Wenn Sie jedoch bereit sind, durchzuhalten, hat das Codieren Ihrer eigenen benutzerdefinierten Beitragstypen seine Vorteile, nämlich, dass Sie nicht auf ein Plugin angewiesen sind, falls dieses Plugin jemals aufhören sollte zu funktionieren oder nicht mehr unterstützt wird.