Custom Post Types in WordPress erstellen - WordPress Custom Post Types Workshop Teil 1

  • Veröffentlicht am: 23. 2. 2017
WordPress Custom Post Types Workshop Teil 1

Willkommen zum ersten Teil meines Workshops zum Thema Custom Post Types in WordPress.

Ziel des Workshops ist das Erstellen einer dynamischen, multimedialen Datenverwaltung in WordPress. In dieser drei-teiligen Artikelreihe wird für ein Orchester (oder Musiker allgemein) eine Sammlung von Noten, sortiert nach Komponist, Instrument und Stück programmiert. Die Codes und Anleitungen in diesem Workshop können aber auch benutzt werden um z.B. Fussball-Spieler nach Verein und Pokalen o.ä. darzustellen. Sprich: es können jegliche Informationen schön ordentlich mit einem eigenen Custom Post Type in WordPress angelegt, verwaltet und sortiert werden.

Wer diesen Workshop selber umsetzen will, dem rate ich vorher ein vollständiges Backup der WordPress-Website anzulegen. Gerade wenn man eine neue Technik ausprobieren will, ist das ratsam.

Einen Custom Post Type in WordPress mit CPT UI erstellen

Es gibt grundsätzlich zwei Wege in WordPress einen Custom Post Type zu erstellen: zum einen über ein Script, das in die functions.php des Themes eingetragen werden muss oder zum anderen per Plugin. Ich werde in diesem Artikel beide Wege zeigen, ich empfehle hier aber den Weg mittels dem Plugin „Custom Post Type UI“. Der Weg über das Plugin ist einsteigerfreundlicher – und dieser Workshop soll eben dies sein – und außerdem bietet es eine sehr komfortable Verwaltung von Custom Post Types und zusätzlich von Custom Taxonomies, um die es im zweiten Teil des Workshops gehen wird. Die alternative Funktion für die functions.php poste ich am Ende dieses Artikels, hier ein Screenshot, auf dem zu sehen ist, wie man mit CPT UI einen neuen Custom Post Type erstellt. Der Post Type wird im CPT UI Menü unter „Add/Edit Post Types“ erstellt:

 

 

In die ersten drei Eingabefelder tragen wir jeweils „Noten“ ein. Zunächst wird der CPT Slug definiert, dieser wird später im Code mehrfach verwendet und wird auch in URLs benutzt, die zu unserem Custom Post Type gehören. Dann klicken wir noch nicht auf „Add Post Type“ sondern

 

 

wir schauen uns noch die Möglichkeit an, weitere Labels für die Kontextmenüs des Custom Post Type (CPT) zu definieren. Das Label „All items“ wird verwendet für den Menüpunkt zum Anzeigen aller Elemente des CPT, das Label „Add New“ wird verwendet wenn ein neues Element erstellt werden soll, das Label "Add New Item" wird für den gleichen Zweck an anderer Stelle verwendet, das Label "Edit Item" wird angezeigt für den Menüpunkt zum Editieren eines Elementes. Es können insgesamt sehr viele Labels defininiert werden, was eine sehr sinnvolle Funktion dieses Plugins ist, zumal für jedes Label auch eine kurze Erklärung (auf englisch) vorhanden ist. So kann man sich die Kontextmenüs in WordPress für seinen Custom Post Type so definieren, wie es sinnvoll ist. Jetzt klicken wir auf „Add Post Type“ und anschließend ist der CPT fertig eingerichtet:

 

 

Die im Screenshot zu sehenden Menüeinträge „Komponist“, „Stück“ und „Instrument“ sind so genannte Custom Taxonomies. Dies sind zusätzliche Attribute um den Custom Post Type weiter zu verfeinern. So wird es später möglich sein den Noten jeweils einen Komponisten, ein Stück und das jeweilige Instrument zuzuordnen. Wie Custom Taxonomies eingerichtet und mit dem Custom Post Type verknüpft werden, das zeige ich im nächsten Artikel.

Hier noch die weiter oben erwähnte alternative Funktion, mit der der Custom Post Type auch über die functions.php erstellt werden könnte. Für diesen Workshop verwenden wir aber wie gesagt statt dessen die Lösung mit dem Plugin, da diese benutzerfreundlicher ist.

Hier der alternative Code für die functions.php:

 

 

function custom_post_type() {

$labels = array(

'name' => _x( 'Noten', 'Post Type General Name', 'text_domain' ),

'singular_name' => _x( 'Noten', 'Post Type Singular Name', 'text_domain' ),

'menu_name' => __( 'Noten', 'text_domain' ),

'name_admin_bar' => __( 'Noten', 'text_domain' ),

'archives' => __( 'Item Archives', 'text_domain' ),

'attributes' => __( 'Item Attributes', 'text_domain' ),

'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),

'all_items' => __( 'All Items', 'text_domain' ),

'add_new_item' => __( 'Add New Item', 'text_domain' ),

'add_new' => __( 'Noten hinzufuegen', 'text_domain' ),

'new_item' => __( 'Neue Noten', 'text_domain' ),

'edit_item' => __( 'Noten editieren', 'text_domain' ),

'update_item' => __( 'Update Item', 'text_domain' ),

'view_item' => __( 'View Item', 'text_domain' ),

'view_items' => __( 'View Items', 'text_domain' ),

'search_items' => __( 'Search Item', 'text_domain' ),

'not_found' => __( 'Not found', 'text_domain' ),

'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),

'featured_image' => __( 'Featured Image', 'text_domain' ),

'set_featured_image' => __( 'Set featured image', 'text_domain' ),

'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),

'use_featured_image' => __( 'Use as featured image', 'text_domain' ),

'insert_into_item' => __( 'Insert into item', 'text_domain' ),

'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),

'items_list' => __( 'Items list', 'text_domain' ),

'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),

'filter_items_list' => __( 'Filter items list', 'text_domain' ),

);

$args = array(

'label' => __( 'Noten', 'text_domain' ),

'description' => __( 'Noten', 'text_domain' ),

'labels' => $labels,

'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks',

'revisions', 'custom-fields', 'page-attributes', 'post-formats', ),

'taxonomies' => array( 'category', 'post_tag' ),

'hierarchical' => false,

'public' => true,

'show_ui' => true,

'show_in_menu' => true,

'menu_position' => 5,

'show_in_admin_bar' => true,

'show_in_nav_menus' => true,

'can_export' => true,

'has_archive' => true,

'exclude_from_search' => false,

'publicly_queryable' => true,

'capability_type' => 'page',

);

register_post_type( 'noten_type', $args );

 

}

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

 

 Zum vorigen ArtikelZum 2. Teil des Workshops

Kommentare

Neuen Kommentar schreiben