So erstellen Sie exklusive benutzerdefinierte Taxonomien in WordPress
Veröffentlicht: 2022-03-11WordPress, eines der leistungsstärksten Open-Source-Blogging- und Content-Management-Systeme, wird verwendet, um einen großen Teil der Interwebs zu betreiben. Auf bis zu einem Viertel aller Websites wird WordPress ausgeführt, und an der Nachfrage nach WordPress-Entwicklungsdiensten mangelt es nicht.
Im Gegensatz zu vielen anderen CMS wird WordPress von vielen wegen seiner Flexibilität und Anpassbarkeit geliebt. Taxonomien, eine der Kernfunktionen von WordPress, ermöglichen es Ihnen, Inhalte genau so zu organisieren, wie Sie es brauchen. Obwohl es mit einigen Standard-Taxonomien integriert ist, können Sie mit WordPress so viele benutzerdefinierte Taxonomien hinzufügen, wie Sie möchten.
Damit sich Taxonomien jedoch genau so verhalten, wie Sie es möchten, müssen Sie möglicherweise mit einigen undokumentierten Ansätzen herumspielen.
In diesem Artikel erfahren Sie, wie Sie exklusive benutzerdefinierte Taxonomien in WordPress definieren können, die sich eher wie Kategorien als wie Tags verhalten, sodass Sie Ihre Beiträge viel strenger kategorisieren können, als dies standardmäßig möglich ist.
Was ist eine Taxonomie?
Laut dem WordPress-Kodex:
Eine Taxonomie ist eine Möglichkeit, Dinge zu gruppieren.
Beispielsweise kann man eine Reihe verschiedener Obstsorten nach verschiedenen Merkmalen gruppieren und diesen Gruppen dann Namen zuweisen.
In WordPress werden Taxonomien verwendet, um Beiträge, Seiten und sogar benutzerdefinierte Beitragstypen in verschiedenen Gruppen zu gruppieren.
Die Namen für die verschiedenen Gruppierungen in einer Taxonomie werden Begriffe genannt. Nehmen Sie zum Beispiel Früchte und wie sie nach ihren Farben gruppiert werden können. In diesem Fall wären die Namen verschiedener Farben die Begriffe.
Standardmäßig ist WordPress mit vier Taxonomien ausgestattet: category , tag , link category und post format . Hier erfahren Sie mehr über diese Standardtaxonomien.
Unter diesen integrierten Taxonomien sind Kategorien und Tags sehr ähnlich, haben aber einen wichtigen Unterschied: Kategorien sind exklusive Taxonomien (dh Sie können für jeden Beitrag höchstens eine Kategorie auswählen), während jedem Beitrag mehrere Tags zugewiesen werden können.
Darüber hinaus sind Kategorien in der Regel vordefiniert, während Tags nach Belieben definiert werden können.
Benutzerdefinierte Taxonomien definieren
Sie können eine benutzerdefinierte Taxonomie mit der Funktion register_taxonomy()
definieren. Hier erfahren Sie mehr über die Funktion.
Um zu sehen, wie diese Funktion funktioniert, definieren wir eine benutzerdefinierte Taxonomie für Beiträge mit Fotos von Landschaften.
function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );
Im obigen Snippet definieren wir eine neue Taxonomie für Beiträge namens view .
Sie können sich vorstellen, dass diese Taxonomie verwendet wird, um Fotos basierend auf der Art oder Art der Ansichten zu kategorisieren, die in den Fotos vorhanden sind (z. B. Berg, See oder Wald).
Beiträge, die zu bestimmten Begriffen dieser Kategorie gehören, erscheinen wie immer unter /view/{view_name} .
Die Capabilities-Zeile im obigen Snippet ist optional. Ohne sie wird WordPress dieselben Benutzern standardmäßig Funktionen wie Beiträge zur Verfügung stellen. Wie oben gezeigt, ermöglicht dies jedem Benutzer mit der benutzerdefinierten „edit_guides“-Fähigkeit, die Taxonomie einem Beitrag zuzuweisen, und jedem Benutzer mit der benutzerdefinierten „publish_guides“-Fähigkeit, neue Taxonomieelemente zu erstellen.
Gemäß der offiziellen Dokumentation gibt es vier Fähigkeiten, die definiert werden können:
Zu den Taxonomiefunktionen gehören
assignterms
,editterms
,manageterms
(zeigt die Taxonomie in der Admin-Navigation an) unddeleteterms
.
Wie Taxonomien verwendet werden
Innerhalb Ihres Codes können Sie die Funktion wp_set_object_terms()
verwenden, um mithilfe der Taxonomie Begriffe zu Objekten hinzuzufügen. Sie können vorhandene Begriffe mit der Funktion the_terms()
. Darüber hinaus können Sie die Funktion wp_tag_cloud()
verwenden, um eine Begriffswolke für Ihre benutzerdefinierte Taxonomie zu generieren. Hier erfahren Sie mehr über diese Funktionen.
Auf der UI-Seite erstellt WordPress für jede Taxonomie eine neue Meta-Box für Beiträge. Das Meta-Feld ähnelt dem Meta-Feld Tags, mit dem Sie einen oder mehrere Begriffe mit Ihrem Beitrag verknüpfen können. Dies ist, was WordPress standardmäßig tut, und das können wir ändern, indem wir eine Taxonomie exklusiv machen: Lassen Sie die benutzerdefinierte Taxonomie sich wie die Kategorie-Taxonomie verhalten.
Exklusivität von Taxonomien erzwingen
Wenn wir eine benutzerdefinierte Taxonomie mit der Methode register_taxonomy()
erstellen, fügt WordPress der Post-Bearbeitungsseite eine Metabox mit Mehrfachauswahl hinzu:
Mit dieser Metabox kann ein Benutzer eine beliebige Anzahl bestehender (bereits verwendeter) Begriffe auswählen und auch neue Begriffe über das Textfeld hinzufügen.
Um eine kategorieähnliche Taxonomie zu erstellen, bei der jeder Beitrag zu höchstens einer Kategorie aus einer Reihe vordefinierter Kategorien gehört, können Sie dies tun, indem Sie WordPress ein wenig optimieren:
- Blenden Sie die von WordPress erstellte Standard-Meta-Box aus.
- Erstellen Sie auf der Nachbearbeitungsseite ein benutzerdefiniertes Metafeld, das Steuerelemente für die Auswahl einzelner Elemente bereitstellt.
- Speichern Sie den Taxonomiewert, wenn der Beitrag gespeichert wird.
Werfen wir einen Blick auf jeden der Schritte.
Blenden Sie die von WordPress erstellte Standard-Meta-Box aus
Dazu müssen wir die Optionen show_in_quick_edit
und meta_box_cb
beim Aufruf von register_taxonomy
auf false
setzen.

Die erste Option verbirgt die Taxonomie im Schnell-/Massenbearbeitungsfeld und die zweite Option verbirgt sie auf der Post-Bearbeitungsseite:
register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));
Wenn das Standard-Meta-Feld ausgeblendet ist, können Elemente über die Taxonomie-Verwaltungsseite zum Satz verfügbarer Begriffe der Taxonomie hinzugefügt werden:
Erstellen Sie eine benutzerdefinierte Meta-Box auf der Beitragsbearbeitungsseite
Um eine benutzerdefinierte Metabox zu erstellen, können wir den WordPress-Hook add_meta_boxes
verwenden. Hier erfahren Sie mehr über den Haken.
add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); }
Wir rufen die Methode add_meta_box
mit den folgenden Argumenten auf:
-
taxonomy_box
– Die ID der Metabox -
__('Custom Exclusive Taxonomy')
– Der Titel der Metabox -
fill_custom_meta_box_content
– Eine Funktion, die verwendet wird, um den Inhalt der Metabox zu füllen -
post
– Dies zeigt an, dass das Meta-Feld auf der Post-Bearbeitungsseite erscheinen soll. -
side
– Dies gibt die Stelle an, an der die Metabox eingefügt werden soll.
Beachten Sie, wie wir taxonomy_box
als ID angegeben haben. Es ist jedoch die Funktion im dritten Parameter, mit der wir definieren können, was in die Box kommt.
Wir werden nun die Funktion fill_custom_meta_box_content
implementieren:
<?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }
Hier rufen wir zunächst alle Begriffe (dh vorhandene Werte) der Taxonomie ab. Wir werden diese verwenden, um eine Liste von Radio-Button-Steuerelementen anzuzeigen.
Als Nächstes rufen wir den aktuell ausgewählten Taxonomiebegriff mit der Funktion get_the_terms()
– wir benötigen ihn, um das entsprechende Optionsfeld auszuwählen.
Beachten Sie, dass diese Funktion ein Array zurückgibt. Dies liegt daran, dass dem Beitrag standardmäßig eine beliebige Anzahl von Begriffen zugeordnet werden kann. Nach unserer Annahme hat der Post höchstens einen Begriff, also greifen wir auf das erste Array-Element zu. (Es ist in Ordnung, wenn das Array leer ist; wir erhalten null
als aktuellen Wert und es wird kein Optionsfeld ausgewählt.)
Der HTML-emittierende Code verwendet custom_taxonomy
als Namen von Optionsfeldern und entsprechende Begriffs-IDs als ihre Werte; Optionsfeld-ID-Attribute werden nur zum Verbinden mit Label-Tags verwendet. Als Ergebnis erhalten wir die folgende benutzerdefinierte Metabox:
Speichern Sie den Taxonomiewert, wenn der Beitrag gespeichert wird
Schließlich müssen wir den Taxonomiewert beibehalten, wenn der Beitrag gespeichert wird. Dazu können wir den save_post
Hook verwenden:
add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }
Und das ist es! Wir sind fertig.
Sie wissen jetzt, wie Sie eine benutzerdefinierte Taxonomie definieren, die sich wie die integrierte Kategorietaxonomie verhält.
Hinweis: WordPress hat eine Funktionsanfrage akzeptiert, um das Umschalten der Exklusivität für benutzerdefinierte Taxonomien zu vereinfachen. Das Ticket hat jedoch seit einiger Zeit nicht mehr viel Aktivität gesehen.
Einpacken
Taxonomien sind eine sehr mächtige und nützliche Funktion in WordPress. Standardmäßig fehlt ihnen die Möglichkeit, Beiträge streng zu kategorisieren, aber wie bei fast allem in WordPress sind Taxonomien und verwandte Funktionen extrem anpassbar. Dadurch können wir diese oft notwendige Fähigkeit in wenigen Schritten hinzufügen.
Der hier vorgestellte Ansatz kann auch verwendet werden, um eine noch individuellere Benutzeroberfläche auf Nachbearbeitungsseiten für die Taxonomie-Begriffsauswahl zu erstellen.
Ich hoffe, Sie fanden dieses kurze Tutorial zum Definieren exklusiver benutzerdefinierter Taxonomien hilfreich!