wordpress-custom-post-types

Jeder der schon mal in einem WordPress Adminbereich war weiß das es prinzipiell zwei Arten gibt, Inhalte in WordPress zu veröffentlichen. Die Rede ist von Beiträgen und Seiten. Diese Arten unterscheiden sich vor allem darin, das Beiträge kategorisiert werden können, wobei Seiten alleine stehen.

Diese zwei Veröffentlichungsarten für Inhalte reichen auch vollkommen aus, wenn man mit WordPress einen Blog betreiben möchte aber dadurch das WordPress als Pflegesystem auch immer häufiger für Websiten verwendet wird reichen die Standardmöglichkeiten nicht mehr aus.

 

Inhalte über andere Wege verwalten

Häufig sehe ich das bei Websiten, welche über WordPress laufen versucht wird, unterschiedlichste Inhaltsbereiche und Typen über Beiträge und Seiten zu verwalten. Ein klassisches Beispiel dafür, eigene Termine über Beiträge zu publizieren oder viele unterschiedliche Seiten-Templates anzulegen um die Ausgabe im Frontend zu kontrollieren.

Alles auf die Beiträge und Seiten zusammen zu quetschen bringt keine Vorteile, lediglich Nachteile. Einer davon ist, das früher oder später auch einfach nur die Übersicht über die verschiedenen Inhalte verloren geht.

Für solche Fälle bietet aber WordPress von sich aus eine einfache Lösung – das Erstellen von eigenen Custom Post Types.

 

Was Custom Post Types sind

Post Types nennt man in WordPress die Arten von Inhalten. Standardmäßig hat WordPress die Post Types Beiträge und Seiten, es ist aber möglich nach belieben weitere dieser Post Types anzulegen und damit sein WordPress Administrationsbereich zu erweitern. Diese eigenen ersten Post Types nennt man Custom Post Types.

So kann man in WordPress neben den normalen Beiträgen und Seiten, weitere Inhaltstypen wie zum Beispiel Termine anlegen und diese separat verwalten.

 

Eigene Custom Post Types in WordPress anlegen

Das Anlegen neuer Custom Post Types ist sehr einfach gestrickt. WordPress bietet dafür eine Funktion, mit der man simpel über den Aufruf und der Übergabe einiger Parameter schnell einen neuen Post Type hat. Die Funktion zum Erstellen neuer Post Types lautet „register_post_type“ und muss in der functions.php ausgeführt werden.

Ein Aufruf mit entsprechender Parameterübergabe hat folgendermaßen auszusehen

register_post_type('mein-eigener-post-type',array(
 'labels' => array( // Labels sind die Beschriftungen im Administrationsbereich
   'name' => 'Inhalte', // Post Types (Plural)
   'singular_name' => 'Inhalt', // Post Type (Singular)
   'add_new' => 'Neu', // Neu hinzufügen
   'add_new_item' => 'Neuen Inhalt hinzufügen, // Neuen Post Type Inhalt hinzufügen
   'edit_item' => 'Inhalt bearbeiten', // Post Type Inhalt bearbeiten
   'new_item' => 'Neuer Inhalt', // Neuer Post Type Inhalt
   'all_items' => 'Alle Inhalte', // Alle Inhalte des Post Types
   'view_item' => 'Inhalt anzeigen', // Post Type Inhalt anzeigen
   'search_items' => 'Inhalte suchen', // Nach Post Type Inhalten suchen
   'not_found' => 'Keine Inhalte gefunden', // keine Einträge gefunden
   'not_found_in_trash' => 'Keine Inhalte im Papierkorb', // Text für den leeren Papierkorb
   'parent_item_colon' => '',
   'menu_name' => 'Post Type Inhalt' // Wird im Adminmenü als Name angezeigt
 ),
 'public' => true, // Öffentlich zugänglich
 'publicly_queryable' => true,
 'show_ui' => true, // Im Administrationsbereich anzeigen
 'show_in_menu' => true, // Im Menü anzeigen
 'query_var' => true, // Für eigene Querys zugänglich machen
 'rewrite' => array( 'slug' => 'book' ), // URL-Slug umschreiben
 'capability_type' => 'post', // Rechte-Einstellungen vererben von anderem Post Types
 'has_archive' => true, // Ein Archiv darf angezeigt werden
 'hierarchical' => false, // Darf Unterseiten haben
 'menu_position' => null, // Positionierung im Menü
 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) // Unterstützte Editor Möglichkeiten
));

Über diese Funktion hat man bereits einen eigenen Post Type erstellt. Die Funktion benötigt zwei Parameter – der erste ist der Alias für den Post Type – dieser wird als String übergeben. Der zweite Parameter muss ein Array sein und dient der Konfiguration.

Achtung: Das Beispiel hier nicht einfach eins zu eins übernehmen, sondern vorher umbedingt die Parameter anpassen und am besten auch noch die Dokumentation zu Custom Post Types auf WordPress überfliegen

Custom Post Types sind in meinem Alltag nicht mehr weg zu denken. Vor allem bei großen Projekten kann man nicht auf Sie verzichten. Sie erleichtern enorm die Verwaltung der Inhalte und schaffen mehr Übersicht im Administrationsbereich.

custom-post-type
 

Vorlagen im Theme für Custom Post Types erstellen

Der nächster Schritt wäre für die Custom Post Types entsprechende Vorlagen im Theme zu erstellen. Neue Vorlagen zu erstellen ist auch einfach zu handhaben, man muss eine neue PHP-Datei in seinem Theme Ordner erstellen und diese nur richtig benehmen. Der Name muss „single-{post-type}.php lauten – {post-type} bitte mit dem entsprechenden gesetzten Post Type Slug ersetzen. Die Programmierung der Vorlage erfolgt dann ganz wie gewohnt von WordPress.

Sollte man bei der Konfiguration die Anzeige für ein Archiv auf „true“ gesetzt haben, lässt sich auch dafür eine eigene Vorlage im Theme anfertigen. Das Prinzip dafür ist das selbe wie für die Einzelansicht im Theme, eine neue PHP-Datei anlegen und diese entsprechend benennen – archiv-{post-type}.php. Da bitte auch das {post-type} entsprechend ersetzen.

Sollten keine extra Vorlagen in WordPress angelegt worden sein, wird anstelle dafür dann die Vorlagen für die Standardbereiche genutzt. Also fehlt die single-{post-type}.php wird die single.php genutzt. Das gleiche gilt auch für die Archiv-Vorlagen

Neben den Custom Post Types gibt es auch noch die Custom Taxanomies, nichts anderes als eigene „Kategorien“. Custom Post Types und Custom Taxonomies lassen sich auch miteinander verknüpfen. Dazu dann aber mehr in einem eigenen Artikel.

Weiterführende Links

Der Autor:
Ich bin ein junger Webentwickler aus Fulda. In meinen Blog schreibe ich über Themen wie Wordpress, Zend Framework und Tipps für einen leichteren Arbeitsablauf. Ich möchte meine Erfahrungen teilen und dem einem oder anderen Webentwickler damit das Leben erleichtern. Finde mich auf Google+, auf Xing oder folge mir auf Twitter. Ich freue mich über jeden neuen Kontakt.

Tragen Sie sich für meinen Newsletter ein