WordPress Custom Taxonomy erstellen

In diesem Artikel:

Kategorie: Wordpress: , ,

Beispiel: Ich möchte zusätzlich zum Autor des Beitrags die mitwirkenden Autoren nennen. Hierzu möchte ich eine Schlagwortliste (tags) nutzen, damit ich später eine Liste alle genannten mitwirkenden Autoren erstellen kann.

Zu jedem WordPress-Befehl habe ich den Link zum WordPress Kodex eingefügt. Dort werden alle Parameter und deren Einstellungsmöglichkeiten vollständig beschrieben.

functions.php

In die functions.php folgenden Code einfügen.

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

function create_post_taxonomies() {

 $labels = array(
 'name' => _x( 'Liste der mitwirkenden Autoren', 'taxonomy general name', 'textdomain' ),
 'singular_name' => _x( 'Mitwirkender Autor', 'taxonomy singular name', 'textdomain' ),
 'search_items' => __( 'Autor suchen', 'textdomain' ),
 'popular_items' => __( 'Meistgenannte Autoren', 'textdomain' ),
 'all_items' => __( 'Alle Autoren', 'textdomain' ),
 'parent_item' => null,
 'parent_item_colon' => null,
 'edit_item' => __( 'Autor bearbeiten', 'textdomain' ),
 'update_item' => __( 'Autor aktualisieren', 'textdomain' ),
 'add_new_item' => __( 'Neuen Autor hinzufügen', 'textdomain' ),
 'new_item_name' => __( 'Name des neuen Autors', 'textdomain' ),
 'separate_items_with_commas' => __( 'Autoren mit Kommas trennen', 'textdomain' ),
 'add_or_remove_items' => __( 'Hinzufügen oder Entfernen von Autoren', 'textdomain' ),
 'choose_from_most_used' => __( 'Wähle aus den meistgenannten Autoren', 'textdomain' ),
 'not_found' => __( 'Keinen Autor gefunden.', 'textdomain' ),
 'menu_name' => __( 'Mitwirk. Autoren', 'textdomain' ),
 );

$args = array(
 'hierarchical' => false,
 'public' => true,
 'labels' => $labels,
 'show_ui' => true,
 'show_admin_column' => true,
 'show_tagcloud' => true,
 'update_count_callback' => '_update_post_term_count',
 'query_var' => true,
 //'rewrite' => array( 'slug' => 'mitwirk-autor' ),
 );

<strong>register_taxonomy</strong>( 'mitwirk_autor', 'post', $args );
}

Erklärung:

Der erste Block ($labels) enthält die Beschriftungen für die GUI. Daher empfehle ich hier aussagekräftige und eindeutige Bezeichnungen zu wählen.

Der zweite Block ($args) enthält die weiteren Parameter des Befehls register_taxonomy. Die Variable $labels wird hier übrigens in den Parameter labels eingebunden.

Wichtig ist der Parameter hierachical. Der Wert false erstellt eine Taxonomy analog einer Schlagwortliste. Der Wert true erstellt eine Taxonomy analog einer Kategorienliste, in der auch untergeordnete Kategorien erstellt werden können.

Abschließend folgt der eigentlich Befehl register_taxonomy, der die neue Taxonomy erstellt

<em>register_taxonomy( 'mitwirk-autor', 'post', $args );</em>

Der erste Wert in den Klammern (hier: ‚mitwirk-autor‘) enthält die technische Bezeichnung der Taxonomy. Dieser Wert muss eindeutig sein und wird später noch benötigt. Er sollte nur Kleinbuchstaben und den Unterstrich enthälten und nicht länger als 32 Zeichen sein.

Der zweite Wert (hier: ‚post‘) legt fest, für welchen Objekttypen die neue Taxonomy genutzt werden kann. Dies kann jeder Standard-Post Type (bspw. ‚post‘ und ‚page‘) und jeder registrierte Custom Post Type sein.

https://codex.wordpress.org/Function_Reference/register_taxonomy

Permalinks aktualisieren

Nachdem die neue Taxonomy registriert wurde, am besten einmal die Permalinks aktualisieren. Hierzu im Dashboard unter Einstellungen > Permalinks auf den Button „Änderungen übernehmen“ klicken. Es müssen keine Einstellungen geändert werden. Nur auf den Button klicken.

Darstellung der Taxonomy zu einem Beitrag

Der folgende Code könnte bspw. in der content.php und der content-single.php eingefügt werden und erstellt eine Liste der zum jeweiligen Beitrag eingetragenen mitwirkenden Autoren.

<?php
echo <strong>get_the_term_list</strong>( $post->ID, 'mitwirk_autor', '<strong>Mitwirkende Autoren: </strong>', ', ', '</p>');
?>

https://codex.wordpress.org/Function_Reference/get_the_term_list

Darstellung einer Übersicht aller verwendeten Einträge der Taxonomy

Zur Darstellung einer kompletten Liste aller Einträge der erstellten Taxonomy kann der folgende Code bspw. in einer eigenen Template-PHP eingefügt werden.

In diesem Beispiel habe ich einen eigenen <div>-Block erstellt, damit ich die Liste mittels style.css separat gestalten kann.

<div id="liste_mitwirk_autoren">

	<h2>Mitwirkende Autoren</h2>

	<ul>
		<?php wp_list_categories( array(
			'child_of'            => 0,
			'current_category'    => 0,
			'depth'               => 0,
			'echo'                => 1,
			'exclude'             => '',
			'exclude_tree'        => '',
			'feed'                => '',
			'feed_image'          => '',
			'feed_type'           => '',
			'hide_empty'          => 1,
			'hide_title_if_empty' => false,
			'hierarchical'        => false,
			'order'               => 'ASC',
			'orderby'             => 'name',
			'separator'           => '',
			'show_count'          => 0,
			'show_option_all'     => '',
			'show_option_none'    => __( 'No categories' ),
			'style'               => 'list',
			'taxonomy'            => 'mitwirk-autor',
			'title_li'            => __( '' ),
			'use_desc_for_title'  => 1,
		) ); ?>
	</ul>
</div><!-- Ende liste_mitwirk_autoren -->

Der Parameter ‚format‘ mit dem Wert ‚list‘ erstellt eine Liste mit der entsprechenden HTML-Formatierung (<ul><li></li></ul>).

https://codex.wordpress.org/Function_Reference/wp_tag_cloud

Veröffentlicht am
Kategorisiert in Wordpress