✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Erstellen Sie benutzerdefinierte Beitragstypen und benutzerdefinierte Taxonomien in WordPress per Code

21

Dies ist ein Tutorial zum Erstellen eines benutzerdefinierten Beitragstyps und einer benutzerdefinierten Taxonomie in WordPress per Code. Wir sehen uns häufige Fallstricke an und welche Argumente für eine minimale, aber ausreichende Erstellung verwendet werden sollten. Vollständiges Beispiel am Ende enthalten.

Wo der Code hinzuzufügen ist

Die Erstellung von benutzerdefinierten Beitragstypen (CPTs) und benutzerdefinierten Taxonomien in WordPress kann in einer Theme- functions.phpDatei oder in einem Plugin erfolgen. Denken Sie daran, dass der benutzerdefinierte Beitragstyp und die benutzerdefinierte Taxonomie verschwinden, wenn Sie das Design wechseln oder das Plugin deaktivieren. Daher ist es sicher, die CPT-Registrierung vorübergehend aus dem Design zu entfernen und in ein Plugin zu verschieben – solange Sie den gleichen benutzerdefinierten Beitragstyp oder Taxonomie-Identifikator-Slug/ID beibehalten.

Verwenden Sie zum Erstellen (und Ändern) einer CPT oder Taxonomie immer den initHaken. Wenn Sie es in der Wurzel von functions.php(außerhalb eines Hakens) oder einem anderen Haken platzieren, treten Probleme auf.

Erstellen eines benutzerdefinierten Beitragstyps

Zum Erstellen eines benutzerdefinierten Beitragstyps verwenden Sie die register_post_typeFunktion. Es akzeptiert zwei Parameter; erstens die Beitragstypkennung und zweitens ein Array mit allen Argumenten.

Die Beitragstypkennung ist ein Slug-Versionsname Ihres Beitragstyps. Zum Beispiel werden Beiträge und Seiten der in WordPress integrierten Beitragstypen als „ post” und „ page” identifiziert. Der Bezeichner muss eindeutig sein, er muss einer Reihe von Regeln folgen (Kleinbuchstaben, keine Leerzeichen usw.) und darf nicht einer der reservierten Slugs von WordPress sein.

Ich habe gelernt, dass dies die minimalen, aber vollkommen ausreichenden Argumente für die Registrierung eines Beitragstyps sind. wenn man bedenkt, dass es sich um ein normales öffentliches CPT handelt und Sie alle Bezeichnungen, die „post” oder „page” enthalten, mit dem tatsächlichen Namen Ihres CPT überschreiben möchten:

Ein Überblick über die Argumente

Beachten Sie, dass einige der Argumente Werte von anderen Argumenten erben. Wenn sie nicht ausdrücklich festgelegt werden, können sie standardmäßig denselben Wert oder das Gegenteil wie ein anderer Wert haben. Mehrere Argumente erben denselben oder den entgegengesetzten Wert des Arguments public. Lesen Sie die Dokumentation, um zu sehen, was der Standardwert für jedes Argument ist und ob Sie ihn überschreiben müssen.

Wenn Sie damit einverstanden sind, Texte in Admin zu haben, die sich auf Ihren Beitragstyp als „Beitrag” oder „Seite” beziehen, können Sie die Definition der Label-Argumente überspringen. Sie werden wahrscheinlich nur mit label(Plural Name) und innerhalb des labelsArrays mit nur singular_name(Singular Name) auskommen.

Wenn Sie dies nicht explizit show_in_restauf „true” setzen, verwendet Ihr benutzerdefinierter Pos-Typ den alten klassischen Editor. Wenn Sie den Gutenberg-Editor für Ihren benutzerdefinierten Beitragstyp verwenden möchten, müssen Sie ihn show_in_restauf true setzen .

Das supportsArgument gibt an, welche Elemente verfügbar sind, wenn Sie einen Beitrag in Ihrem Beitragstyp bearbeiten. Als Minimum möchten Sie wahrscheinlich den Titel, den Editor und das vorgestellte Beitragsbild.

Das rewriteArgument mit dem Minimum an Array-Elementen slugweist WordPress an, alle einzelnen Beiträge Ihres Beitragstyps neu zu schreiben, um diesen Präfix-Slug zu verwenden. Im obigen Beispiel würde ein einzelner Buchbeitrag eine URL wie; „ http://example.com/book/i-robot/ “. Wenn Sie daran interessiert sind, wie Sie eine Permalink-Regeleinstellung in Admin hinzufügen können, damit Theme-Benutzer diesen Slug selbst entscheiden können, werfen Sie einen Blick auf diesen Beitrag.

Das Argument für das Menüsymbol (menu_icon) kann eines der folgenden Dashicons sein, oder Sie können es leer lassen, um die Standardeinstellung beizubehalten. Der Standardwert ist dasselbe Symbol wie bei Posts. Es ist jedoch eine gute Idee, Ihre benutzerdefinierten Beitragstypen klar zu trennen.

Die Menüposition (menu_position) ermöglicht es Ihnen, die Position Ihres benutzerdefinierten Beitragstyps im Admin-Menü festzulegen. Die Dokumentation listet alle Admin-Menüpositionen auf, damit Sie sie anpassen können; Position 5 ist direkt nach ‘Posts’.

Es gibt ein weiteres Argument (taxonomies) zum Anhängen einer Taxonomie an den Beitragstyp. Wir werden später in diesem Beitrag durchgehen, wie man eine benutzerdefinierte Taxonomie hinzufügt. Um Ihrem Beitragstyp Taxonomien hinzuzufügen, fügen Sie dieses Argument dem obigen Array hinzu;

Ein Hinweis zu Permalinks und 404 nicht gefunden-Fehlern

Nachdem Sie Ihren Code zum Registrieren eines benutzerdefinierten Beitragstyps hinzugefügt haben, werden Sie feststellen, dass beim Anzeigen eines einzelnen Beitrags der Fehler „404 nicht gefunden” zurückgegeben wird. Dies liegt daran, dass Sie „Permalinks aktualisieren” müssen.

Gehen Sie zu Einstellungen > Permalinks und klicken Sie einfach auf die Schaltfläche „Änderungen speichern” (Sie müssen nichts ändern).

Denken Sie daran, dass Sie die rewritePermalinks erneut aktualisieren müssen, wenn Sie das Attribut ändern.

Erstellen einer benutzerdefinierten Taxonomie

Eine benutzerdefinierte Taxonomie kann an einen der Beitragstypen von WordPress (Beiträge, Seiten) oder an einen benutzerdefinierten Beitragstyp angehängt werden. Sie können auch mehrere Taxonomien an einen Beitragstyp anhängen. Wenn Sie eine Taxonomie registrieren, müssen Sie die Beitragstypen angeben, an die sie angehängt werden soll.

Eine Taxonomie kann entweder hierarchisch (wie Post-Kategorien, in denen Sie eine baumbasierte Struktur erstellen können) oder Tag-basiert (wie Post-Tags) sein. Dies ist wirklich die einzige Überlegung, die Sie im Voraus wissen müssen, mit Ausnahme des Identifikator-Slugs. Wie bei CPTs muss der identifizierende Slug für eine Taxonomie eindeutig sein und einer Reihe von Regeln folgen.

Zum Registrieren einer benutzerdefinierten Taxonomie verwenden Sie die register_taxonomyFunktion. Der register_taxonomyakzeptiert den eindeutigen Kennungs-Slug der Taxonomie als erstes Argument, ein Array von Beitragstypen, an das es angehängt werden kann, und schließlich ein Array mit allen anderen Argumenten. Es gibt viele Argumente, aber dies ist meiner Erfahrung nach das Minimum, aber ausreichend, um eine benutzerdefinierte Taxonomie zu registrieren (dies fügt eine tagartige/nicht hierarchische Taxonomie hinzu):

Es wird empfohlen, einen Funktionsaufruf direkt nach dem hinzuzufügen register_taxonomy, um sicherzustellen, dass es richtig an das CPT „angehängt” wird: register_taxonomy_for_object_type. Definieren Sie Ihre Taxonomie als erstes Argument und die CPT als zweites:

register_taxonomy_for_object_type('book_author', 'book');

Ähnlich wie der obige Beitragstyp register_taxonomyakzeptiert er viel mehr Argumente, und viele davon erben oder hängen vom Wert anderer Argumente ab. Lesen Sie die Dokumentation, um zu sehen, was der Standardwert für jedes Argument ist und ob Sie ihn überschreiben müssen.

Ein Überblick über die Argumente

Wenn Sie mit Texten einverstanden sind, die sich auf Ihre Taxonomie als „Tag” (wenn hierarchisch falsch ist) oder „Kategorie” (wenn hierarchisch wahr ist) beziehen, können Sie wahrscheinlich das gesamte labelsArray mit Ausnahme von vielleicht überspringen singular_name.

Das show_admin_columnist praktisch, um eine Spalte mit den zugehörigen Begriffen in Ihrer Taxonomie in Ihrem CPT-Verwaltungsbildschirm hinzuzufügen. Genau wie in Beiträgen sehen Sie eine Spalte mit zugehörigen Kategorien. Dieses Argument ist standardmäßig auf false(Spalte nicht anzeigen) eingestellt, daher überschreibe ich es gerne.

Die Einstellung show_in_restauf true ist erforderlich, damit Ihre Taxonomie in der Post-Bearbeitung im Gutenberg-Editor sichtbar ist, da Gutenberg auf die REST-API angewiesen ist.

Ähnlich wie bei benutzerdefinierten Beitragstypen erhalten Sie wahrscheinlich „404 nicht gefunden”-Fehler in Ihrer benutzerdefinierten Taxonomie. Gehen Sie zu Einstellungen > Permalinks und klicken Sie einfach auf die Schaltfläche „Änderungen speichern”.

Vollständiger Beispielcode

Hier ist ein vollständiges Beispiel für das Erstellen eines CPT für Bücher und das Anhängen von zwei benutzerdefinierten Taxonomien; Genre (hierarchisch) und Buchautor (Tag).

Aufnahmequelle: awhitepixel.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen