WordPress bietet «out of the box» einzig die Beiträge als Post-Types an. Wenn Ihre Website wächst, ist das möglicherweise zu wenig und Sie wünschen sich weitere Möglichkeiten. Das ist kein Problem: Sie können sich beliebig viele Custom Post Types erstellen. Dieser Tipp erklärt, wie das geht.
Wenn Sie einen Custom Post Type erstellen, wird er Ihnen neben den Seiten und Beiträgen im Backend dargestellt. Das erleichtert die getrennte Verwaltung und bietet zahlreiche Optionen – auch bei der Präsentation.
Custom Post Types lassen sich auch über einschlägige Plugins in Ihrer WordPress-Installation einbinden. Eines der bekanntesten ist Custom Post Type UI. Es ist aber auch möglich das Projekt in Eigenregie an die Hand zu nehmen. So schwierig ist das nämlich nicht.
Folgender Code muss in die Datei functions.php kopiert werden. Diese finden Sie unter Design/Theme-Editor.
function custom_post_type_movie() {
//Bezeichner im Backend
$labels = array(
'name' => _x( 'Filme', 'post type general name' ),
'singular_name' => _x( 'Film', 'post type singular name' ),
'add_new' => __( 'Neuen Film anlegen'),
'add_new_item' => __( 'Neuen Film anlegen' ),
'edit_item' => __( 'Film bearbeiten' ),
'new_item' => __( 'Neuer Film' ),
'all_items' => __( 'Alle Filme' ),
'view_item' => __( 'Film ansehen' ),
'search_items' => __( 'Filme durchsuchen' ),
'not_found' => __( 'Keine Filme gefunden' ),
'not_found_in_trash' => __( 'Keine Filme im Papierkorb gefunden' ),
'parent_item_colon' => '',
'menu_name' => 'Filme'
);
// Werte des neuen Custom Post Types
$args = array(
'labels' => $labels,
'description' => 'Dies sind meine Filme',
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail' ),
'taxonomies' => array( 'post_tag', 'category' ),
'has_archive' => true,
'can_export' => false,
'menu_position' => 5,
'capability_type' => 'post',
'rewrite' => array('slug' => 'movies' )
);
register_post_type( 'movie', $args );
}
add_action( 'init', 'custom_post_type_movie' );
Das obige Exempel würde sich beispielsweise für eine Filmdatenbank eignen. Je nachdem, was Sie mit den Custom Post Types beabsichtigen, werden Sie die Vorgaben mit den eigenen Namen und Bezeichnern ersetzen.
Zur Funktion des Codes:
- In den Codezeilen 6-18 wird festgelegt, wie der neue Custom Post Type im Backend dargestellt und bezeichnet wird. Die Bezeichnungen sind selbsterklärend und können von Ihnen frei angepasst werden.
- In den Zeilen 24-40 wird definiert, welche Funktionen dem Posttype zugewiesen werden
- Zeile 24: label
Diese Angaben werden aus dem oben erklärten Part des Codes übernommen - Zeile 25: description
Eine kurze Beschreibung des Custom Post Types - Zeile 26: hierarchical
Legt fest, ob Custom Post Type hierarchisch ist, ob also Elternelemente festgelegt werden können. In diesem Beispiel wäre das nicht der Fall; falls gewünscht könnte man «true» setzen. - Zeile 27: public
Legt fest, inwiefern der Custom Post Type für Autoren und Leser sichtbar ist. In der Regel ist das gewünscht. Darum «true» - Zeile 28: show_ui
Legt fest, ob im Backend ein Standard-Interface zum Bearbeiten angezeigt wird. Ohne das «true» liesse sich der Post Type m Backend nicht editieren. - Zeile 29: show_in_menu
Legt fest, ob der Custom Post Type im Menü des Backends angezeigt wird. Auch das ist in aller Regel gewünscht. - Zeile 30: show_in_nav_menus
Legt fest, ob der Custom Post Type zu Menüs auf der Seite hinzugefügt werden kann. Mindestens können sollte man das schon – auch wenn die Option womöglich gar nicht genutzt wird. - Zeile 31: show_in_admin_bar
Legt fest, ob der Custom Post Type in der Adminleiste angezeigt wird. Das betrifft den Punkt «neu» in der Titelleiste. In der Regel ist das praktisch. - Zeile 32: publicly_queryable
Legt fest, ob eine Suche aus dem Frontend heraus möglich ist. Hier steht «true» – wenn der Post-Type nicht durchsucht werden sollte, müssten Sie «false» eingeben. - Zeile 33: exclude_from_search‘
Legt fest, ob Elemente des Custom Post Types in den Suchergebnissen im Frontend ausgeschlossen werden. Wenn in Zeile 32 «true» steht, sollte hier «false» stehen – bzw. umgekehrt. - Zeile 34: supports
Legt fest, welche Elemente zum Anlegen und Bearbeiten verwendet werden können. Hier sind Titel, Editor, Textauszug und Artikelbild ausgewählt. Sie können frei verändern. Mögliche Angaben: title, editor, author, thumbnail, excerpt, trackbacks, custom-fields, comments, revisions, page-attributes, post-formats - Zeile 35: taxonomies
Ein Array von Taxonomien, die verwendet werden können, zB Kategorien (‚category‘) oder Tags (‚post_tag‘). Es sind auch mehr als deren zwei und zusätzlich Custom Taxonomies möglich, falls Sie solche verwenden. - Zeile 36: has_archive
Ermöglicht das Verwenden von Archivseiten für den Custom Post Type. - Zeile 37: can_export
Legt fest, ob der Custom Post Type exportiert werden kann. - Zeile 38: menu_position
Legt die Position fest, an der das Menüelement im Backend angezeigt wird. Standard: nach Kommentaren - Zeile 39: capability_type/capabilities
Erlaubt es, das Verhalten des Custom Post Types im Bezug auf Benutzerrechte anzugeben. Hier wird der Custom Post Type an die Rechte der Beiträge gekoppelt. - Zeile 40: rewrite
Legt die Regel für Permalinks fest. Die URL würde im vorliegenden Fall https://domain.ch/movies/beitragsname/ heissen.
- Zeile 24: label
Grundsätzlich sind alle diese Argumente optional. Es ist aber hilfreich, sie festzulegen oder wenigstens Überlegungen dazu anzustellen. Lassen Sie die Angaben weg, gelten für den Custom Post Type einfach dieselben Angaben wie für die Beiträge.
Die Custom Post Types gehen häufig Hand in Hand mit Custom Taxonomies. Diesen widmen wir uns im Beitrag «Workshop II: Custom Taxonomies erstellen – ganz ohne Plugin».
Werbung