In diesem Artikel:
Kategorie: Wordpress Wordpress: get_the_term_list , register_taxonomy , wp_tag_cloudBeispiel: 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>).