WordPress individuell

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.

Da wir im Rahmen dieser Anleitung an der functions.php des Themes herumbasteln, empfehlen wir unbedingt den Einsatz eines Child Themes. Wie ihr ein Child Theme erstellen könnt, zeigen wir euch in diesem Beitrag.

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.

WordPress: nicht hierarchische Taxonomie kann verwendet werden

Die neue Taxonomie erscheint im Backend und kann verwendet werden

Legen wir jetzt ein neues Rezept an, können wir neben Kategorie und Schlagworten auch die Ernährungsweise angeben.

WordPress eigene Taxonomie verwenden

Die selbst erstellte Taxonomie für Ernährungsweisen kann benutzt werden

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.

WordPress eigene hierarchische Taxonomie

Beim Erstellen einer neuen Rezeptart kann ein übergeordnetes Elternelement gewählt werden

Beide Custom Taxonomies wurden dem Custom Post Type Rezept zugeordnet und können jetzt beim Anlegen oder Bearbeiten von Rezepten benutzt werden.

WordPress eigene Taxonomien zuordnen

Beide Custom Taxonomies können beim Erstellen von Rezepten verwendet 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?


Katharina

Katharina

Beim Webseiten basteln vergesse ich schnell mal die Zeit. An WordPress gefällt mir besonders die vielfältige Welt der Plugins und Themes, die zum Ausprobieren einlädt.
Katharina
Kommentare zu "Custom Taxonomies für WordPress: eigene Gruppierungen anlegen"
  1. WordPress anpassen: Custom Post Types erstellen schrieb am 19. November 2015, um 09:59 Uhr:

    […] 1: Custom Post Types erstellen Teil 2: Custom Taxonomies erzeugen Teil 3: Custom Post Types & Custom Taxonomies […]

  2. Custom Taxonomies für WordPress - schrieb am 13. März 2016, um 14:42 Uhr:

    […] Custom Taxonomies für WordPress: eigene Gruppierungen anlegen […]

  3. Mathias Judersleben schrieb am 20. März 2016, um 19:05 Uhr:

    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

    1. Katharina schrieb am 1. April 2016, um 10:43 Uhr:

      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

  4. Christiane schrieb am 7. April 2016, um 18:55 Uhr:

    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

    1. Katharina schrieb am 11. April 2016, um 10:22 Uhr:

      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

  5. Florian schrieb am 4. November 2016, um 01:20 Uhr:

    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

  6. Matthias schrieb am 23. November 2016, um 21:36 Uhr:

    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

    1. Matthias schrieb am 23. November 2016, um 21:41 Uhr:

      Kurze Ergänzung:
      Auch, wenn ich die Schlagworte mit ausgeben lasse, kann ich nicht danach filtern.

Schreibe einen Kommentar

Pressengers lebt von der Wordpress Community, beteilige dich mit einem Kommentar!
Deine E-Mail Adresse wird nicht veröffentlicht.

Achtung: Mit dem Absenden eines Kommentars erklärst du dich damit einverstanden, dass alle eingegebenen Daten und deine IP-Adresse zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden. Weitere Informationen zu Akismet und Möglichkeiten des Widerrufs..