Custom Taxonomies für WordPress: eigene Gruppierungen anlegen
Custom Taxonomies sind ein nützliches Werkzeug, um Inhalte in WordPress nach eigenen Kriterien gruppieren und kategorisieren zu können. Wir zeigen euch, wofür Custom Taxonomies gut sind und wie ihr eigene Taxonomien anlegen könnt.
Speziell im Zusammenhang mit Custom Post Types sind Custom Taxonomies eine wichtige Möglichkeit, WordPress für die eigenen Zwecke anzupassen. Dieser Beitrag ist Teil 2 der Reihe „WordPress individuell“. In den weiteren Beiträgen erklären wir unter anderem, wie ihr Custom Post Types erstellen und auf eurer Seite verwenden könnt.
Teil 1: Custom Post Types erstellen
Teil 2: Custom Taxonomies erzeugen
Teil 3: Custom Post Types & Custom Taxonomies verwenden
Custom Taxonomies: Inhalte nach eigenen Kriterien gruppieren
Mithilfe von Taxonomien werden in WordPress Inhalte bestimmten Gruppierungen zugewiesen. Bereits eingebaute Taxonomien sind zum Beispiel Kategorien oder Schlagworte, die standardmäßig bei Beiträgen vergeben werden können.
Besonders wenn man bereits Custom Post Types verwenden, stoßen Kategorien und Schlagworte allerdings schnell an ihre Grenzen. Die Inhalte passen möglicherweise nicht ins System von bisherigen Beiträgen, ihr wollt sie aber trotzdem irgendwie gruppieren. Das könnt ihr mit Custom Taxonomies tun!
Verwendet ihr beispielsweise Custom Post Types für die Anzeige von Buchrezensionen, könntet ihr eine Taxonomie für das Genre des Buches oder den herausgebenden Verlag erstellen. Custom Taxonomies eignen sich also dafür, Inhalte nach eigenen Kriterien zu gruppieren und können auch zur Anzeige verwendet werden.
Custom Taxonomies erstellen
Wir greifen das Rezepte-Beispiel aus dem Beitrag über Custom Post Types auf: für die Rezepte-Sammlung unseres Lifestyleblogs haben wir schon einen eigenen Post Type kreiert. Jetzt passen die üblichen Kategorien und Tags nicht so recht zu Rezepten, deshalb erstellen wir uns einfach eigene Taxonomien.
Ihr wollt eure Leser beispielsweise wissen lassen, für welche Ernährungsweise das jeweilige Rezept geeignet ist: vegan, low-carb, laktosefrei, usw. Außerdem wollt ihr eure Rezepte nach Arten unterteilen, damit eure Leser gezielt nach Kuchenrezepten, Pasta, Salaten etc. suchen können.
Eine eigene Taxonomie definieren
Eine eigene Taxonomie legt ihr mithilfe der Funktion register_taxonomy() in der functions.php eures Themes an:
function custom_taxonomies_rezept() { $args = array(); register_taxonomy( 'ernaehrungsweise', 'rezept', $args ); } add_action( 'init', 'custom_taxonomies_rezept', 0 );
Die Taxonomie erscheint jetzt bereits im Backend, verwendet allerdings noch die Standardwerte.
Custom Taxonomies anpassen
Um unseren Rezepten eine Ernährungsweise zuzuordnen, wollen wir eine nicht-hierarchische Taxonomie (wie die bereits vorhandenen Schlagworte) erstellen. Das könnte zum Beispiel so aussehen:
function custom_taxonomies_rezept() { $labels = array( 'name' => __( 'Ernährungsweisen'), 'singular_name' => __( 'Ernährungsweise'), 'search_items' => __( 'Ernährungsweisen durchsuchen' ), 'popular_items' => __( 'Beliebte Ernährungsweisen' ), 'all_items' => __( 'Alle Ernährungsweisen' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Ernährungsweise bearbeiten' ), 'update_item' => __( 'Ernährungsweise aktualisieren' ), 'add_new_item' => __( 'Neue Ernährungsweise hinzufügen' ), 'new_item_name' => __( 'Neue Ernährungsweise' ), 'separate_items_with_commas' => __( 'Ernährungsweisen mit Kommas trennen' ), 'add_or_remove_items' => __( 'Ernährungsweisen hinzufügen oder entfernen' ), 'choose_from_most_used' => __( 'Aus den meist verwendeten Ernährungsweisen aussuchen' ), 'not_found' => __( 'Keine Ernährungsweisen gefunden.' ), 'menu_name' => __( 'Ernährungsweise' ), ); $args = array( 'hierarchical' => false, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'query_var' => true, 'rewrite' => array( 'slug' => 'ernaehrungsweise' ), ); register_taxonomy( 'ernaehrungsweise', 'rezept', $args ); } add_action( 'init', 'custom_taxonomies_rezept', 0 );
Im Backend könnt ihr jetzt Ernährungsweisen anlegen, bearbeiten und verwalten.
Legen wir jetzt ein neues Rezept an, können wir neben Kategorie und Schlagworten auch die Ernährungsweise angeben.
Hierarchische und nicht-hierarchische Custom Taxonomies
Neben den nicht-hierarchischen Taxonomien wie beispielsweise Schlagworten können auch Custom Taxonomies mit Hierarchie erstellt werden. Eine hierarchische Taxonomie sind zum Beispiel die Kategorien in WordPress.
Für unsere Rezepte erstellen wir zusätzlich eine Taxonomie, um diese in Rezeptarten unterteilen zu können. Beispielsweise wollen wir zwischen Kochen und Backen unterscheiden, und innerhalb dieser Arten zwischen süß und salzig. Dazu erweitert ihr die Funktion zum Beispiel so:
function custom_taxonomies_rezept() { //Nicht-hierarchische Taxonomie für die Ernährungsweise $labels = array( 'name' => __( 'Ernährungsweisen'), 'singular_name' => __( 'Ernährungsweise'), 'search_items' => __( 'Ernährungsweisen durchsuchen' ), 'popular_items' => __( 'Beliebte Ernährungsweisen' ), 'all_items' => __( 'Alle Ernährungsweisen' ), 'parent_item' => null, 'parent_item_colon' => null, 'edit_item' => __( 'Ernährungsweise bearbeiten' ), 'update_item' => __( 'Ernährungsweise aktualisieren' ), 'add_new_item' => __( 'Neue Ernährungsweise hinzufügen' ), 'new_item_name' => __( 'Neue Ernährungsweise' ), 'separate_items_with_commas' => __( 'Ernährungsweisen mit Kommas trennen' ), 'add_or_remove_items' => __( 'Ernährungsweisen hinzufügen oder entfernen' ), 'choose_from_most_used' => __( 'Aus den meist verwendeten Ernährungsweisen aussuchen' ), 'not_found' => __( 'Keine Ernährungsweisen gefunden.' ), 'menu_name' => __( 'Ernährungsweise' ), ); $args = array( 'hierarchical' => false, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'update_count_callback' => '_update_post_term_count', 'query_var' => true, 'rewrite' => array( 'slug' => 'ernaehrungsweise' ), ); register_taxonomy( 'ernaehrungsweise', 'rezept', $args ); //Hierarchische Taxonomie für die Rezeptart $labels = array( 'name' => __( 'Rezeptarten'), 'singular_name' => __( 'Rezeptart'), 'search_items' => __( 'Rezeptarten durchsuchen' ), 'all_items' => __( 'Alle Rezeptarten' ), 'parent_item' => __( 'Übergeordnete Rezeptart' ), 'parent_item_colon' => __( 'Übergeordnete Rezeptart:' ), 'edit_item' => __( 'Rezeptart bearbeiten' ), 'update_item' => __( 'Rezeptart aktualisieren' ), 'add_new_item' => __( 'Neue Rezeptart erstellen' ), 'new_item_name' => __( 'Neue Rezeptart' ), 'menu_name' => __( 'Rezeptart' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'rezeptart' ), ); register_taxonomy( 'rezeptart', array( 'rezept' ), $args ); } add_action( 'init', 'custom_taxonomies_rezept', 0 );
Mit diesem Code erstellt ihr die beiden Custom Taxonomies Ernährungsweise und Rezeptart.
Beim Anlegen von neuen Elementen einer hierarchischen Taxonomie könnt ihr ein Elternelement angeben. Die existierende Hierarchie wird euch beim Verwalten oder Verwenden der Custom Taxonomy auch angezeigt.
Beide Custom Taxonomies wurden dem Custom Post Type Rezept zugeordnet und können jetzt beim Anlegen oder Bearbeiten von Rezepten benutzt werden.
Falls euch Details zu einzelnen Argumenten der Funktion register_taxonomy() interessieren, könnt ihr diese im WordPress Codex nachlesen.
Fazit
Custom Taxonomies bieten euch die Möglichkeit, Inhalte in WordPress nach euren eigenen Angaben zu kategorisieren. Ihr könnt entweder einfache nicht-hierarchische Taxonomien erstellen oder Taxonomien, zwischen deren Elementen ihr dann Eltern-Kind-Beziehungen angeben könnt.
Benutzt ihr Custom Taxonomies auf eurer WordPress Seite?
[…] 1: Custom Post Types erstellen Teil 2: Custom Taxonomies erzeugen Teil 3: Custom Post Types & Custom Taxonomies […]
[…] Custom Taxonomies für WordPress: eigene Gruppierungen anlegen […]
Hallo Katharina nutzt du das immer noch? Sieht echt gut aus und lässt sich bestimmt einfach mit WordPress arbeiten oder? Wie sieht es mit Seo aus nimmt der das auch alles so?
LG Mathias
Hallo Mathias,
na klar, Custom Taxonomies sind nach wie vor ein nützliches Werkzeug. Aus SEO-Sicht sind CT genauso zu behandeln wie die vordefinierten Taxonomien, also Kategorien und Schlagworte.
Viele Grüße,
Katharina
Hallo Katharina,
vielen Dank für Deine sehr guten Anleitungen,
Meine Frage: ich habe unter den Beiträgen einen Glossar angelegt und lasse ihn über die function alphabetisch ordnen.
Als zweites habe ich eben gerade die Custom Post Types wie beschrieben erstellt. Klappt. Doch es werden die Kategorien der Beitragsseiten angezeigt und im Frontend greift es das template zu (das kriege ich wohl noch raus, woran das liegt).
Was ich möchte ist alles komplett zu trennen also eigenständige Kategorien und Custom-Beitragsseiten.
Ist es möglich das zu trennen, vielleicht hast du es schon beschrieben und ich habe es nicht verstanden?
Grüße Christiane
Hallo Christiane,
beim Erstellen des Custom Post Types kannst du angeben, welche Taxonomien dieser verwendet. So wäre die Standardeinstellung für Beiträge:
'taxonomies' => array( 'post_tag', 'category' )
. Anstatt der hier angegebenen Taxonomien (Schlagwörter & Kategorien) kannst du auch eine Custom Taxonomy verwenden.Wie du eigene Archive für deine CPT anlegst, habe ich in diesem Beitrag beschrieben.
Viele Grüße,
Katharina
Hi Katharina,
wo genau in die functions.php muss man das einfügen? Bei mir kommt immer eine weiße Seite mit einer Fehlermeldung. ;-(
LG, Flo
Nabend,
hast du zufällig auch eine Lösung für mein Problem parat?
Ich teste gerade auf einer Seite auf welcher ich gerne Dinge ausprobiere den Umgang mit Taxonomies. Ich würde sie gerne in Verbindung mit einer Suche verwenden. Jedoch kann ich sie schon in der Standardsuche von WordPress nicht finden.
Ich lasse sie auf der Seite auch nicht ausgeben, das möchte ich aber bewusst nicht, ich möchte dennoch nach diesenen Kategorien suchen können. Gibt es da eine Lösung? excluded_from_search sind sie natürlich nicht.
Beste Grüße,
Matthias
Kurze Ergänzung:
Auch, wenn ich die Schlagworte mit ausgeben lasse, kann ich nicht danach filtern.