Workshop II: Custom Taxonomies erstellen – ganz ohne Plugin

22. Februar 2021 | functions.php, WordPress

Geschätzte Lesezeit für diesen Beitrag: ca. 6 Minuten.

Custom Taxonomies können bei Themen-Websites eine hervorragende Ergänzung zu den Kategorien und Schlagwörtern darstellen. Mit ihnen lässt sich die Website individuell massschneidern und sie ergänzen Ihre Custom Post Types perfekt. Eine interessant Option, die gar nicht schwierig selbst eingerichtet werden kann.

Für Custom Taxonomies böte sich das Plugin «Custom Post Type UI» aus dem WordPress Plugin-Katalog an. Da dieses aber in der Gratis-Version an Grenzen stösst, ist Selbstbau eine sehr gute Alternative; mit dem folgenden Code ist es auch kein Hexenwerk.

Im Code sind die beiden wichtigsten Taxonomien «hierarchische Taxonomie» und «nicht-hierarchische Taxonomie» enthalten. Nach dem Code wird auch erklärt, wie Sie nur einen der beiden Teile verwenden oder einen Teil mehrfach einsetzen.

Den Mustercode fügen Sie in die funktions.php Ihrer WordPress-Installation ein. Diese ist via Design/Theme-Editor aufrufbar.

function custom_taxonomies_movie() {

//Nicht-hierarchische Taxonomie Genre

         $labels = array(
               'name'                       => __( 'Genres'),
               'singular_name'              => __( 'Genre'),
               'search_items'               => __( 'Genres durchsuchen' ),
               'popular_items'              => __( 'Beliebte Genres' ),
               'all_items'                  => __( 'Alle Genres' ),
               'parent_item'                => null,
               'parent_item_colon'          => null,
               'edit_item'                  => __( 'Genre bearbeiten' ),
               'update_item'                => __( 'Genre aktualisieren' ),
               'add_new_item'               => __( 'Neues Genre hinzufügen' ),
               'new_item_name'              => __( 'Neues Genre' ),
               'separate_items_with_commas' => __( 'Genres mit Kommas trennen' ),
               'add_or_remove_items'        => __( 'Genres hinzufügen oder entfernen' ),
               'choose_from_most_used'      => __( 'Aus den meist verwendeten Genres aussuchen' ),
               'not_found'                  => __( 'Keine Genres gefunden.' ),
               'menu_name'                  => __( 'Genre' ),
         );

         $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' => 'genre' ),
         );

        register_taxonomy( 'genre', 'movie', $args );

//Hierarchische Taxonomie SchauspielerIn

         $labels = array(
               'name'              => __( 'SchauspielerInnen'),
               'singular_name'     => __( 'SchauspielerIn'),
               'search_items'      => __( 'SchauspielerInnen durchsuchen' ),
               'all_items'         => __( 'Alle SchauspielerInnen' ),
               'parent_item'       => __( 'Übergeordnete SchauspielerIn' ),
               'parent_item_colon' => __( 'Übergeordnete SchauspielerIn:' ),
               'edit_item'         => __( 'SchauspielerIn bearbeiten' ),
               'update_item'       => __( 'SchauspielerIn aktualisieren' ),
               'add_new_item'      => __( 'Neue/n SchauspielerIn erstellen' ),
               'new_item_name'     => __( 'Neue/r SchauspielerIn' ),
               'menu_name'         => __( 'SchauspielerIn' ),
         );

         $args = array(
               'hierarchical'      => true,
               'labels'            => $labels,
               'show_ui'           => true,
               'show_admin_column' => true,
               'query_var'         => true,
               'rewrite'           => array( 'slug' => 'cast' ),
         );

         register_taxonomy( 'cast', array( 'movie' ), $args );
}

add_action( 'init', 'custom_taxonomies_movie', 0 );

Wir greifen hier das Film-Beispiel aus dem Beitrag über Custom Post Types auf: Im Code gibt es eine Custom Taxonomy zum Filmgenre und eine weitere mit SchauspieerInnen. Sie sehen im Code, dass zwischen hierarchischen und Nicht-hierarchischen Kategorien unterschieden wird.

Kurz erklärt:

  • Hierarchische Taxonomien: Die Kategorien der WordPress-Beiträge sind hierarchisch. Es lassen sich Eltern und Unterkategorien einrichten und im Beitrag werden die hierarchischen Taxonomien als Checkbox dargestellt.
    Wenn Sie nur eine hierarchische Taxonomie verwenden wollen, dann übernehmen Sie im obigen Code die Zeilen 3-35 nicht
  • Nicht-hierarchische Taxonomien: Die Schlagworte von WordPress sind eine solche Kategorie. Sie werden im Beitrag kommagetrennt eingegeben.
    Wenn Sie nur eine nicht-hierarchische Taxonomie verwenden wollen, dann übernehmen Sie im obigen Code die Zeilen 36-61 nicht
  • Die Labels im jeweils zweiten Teil der Zeilen 6-21 und 39-49 können Sie frei anpassen.
  • Ebenso sollten Sie die rewrite-slugs der Zeilen 31 und 58 zu etwas sinnvollem anpassen und ihn in Zeile 34, bzw. 61 wiederholen.
    Der Slug definiert den zugehörigen URL-Part des Taxonomy-Archivs: https://domain.ch/slugname/
  • Die Taxonomien im Codebeispiel heissen «genre» und «cast» und wurden dem Film-Post-Type «movie» zugewiesen. Passen Sie die Zeilen 34 und 61 an Ihre Bedürfnisse an.
  • Sie können auch mehrere hierarchische und/oder mehrere nicht-hierarchische Taxaonomien einsetzen. Dann müssten Sie den zutreffenden Codepart (entweder Zeilen 3-35 oder Zeilen 36-61) mehrfach in Ihre functions.php einfügen.

Die neuen Custom Taxonomies können Sie nun Ihren Custom Post Types zuweisen. Die Zuweisung geschieht in Zeile 35 des Beispiel-Codes in diesem Beitrag.

 

Werbung

Werbung

 

Kostenlose WordPress- und Divi-Tricks im Abo

Wir schicken Ihnen sporadisch (weniger als 10x jährlich) neue Tricks für Wordpress und das Divi-Theme, aber auch hilfreiche CSS- und HTML-Codes frei Haus.

Füllen Sie zur Anmeldung das folgende Formular aus. Angaben mit * sind Pflichtangaben.









Vielen Dank.

Pin It on Pinterest

Share This