Quelle: Dr. Web
Was genau sind Custom Post Types?
WordPress ist das beliebteste Content-Management-System der Welt, weil es extrem anpassbar und flexibel ist. Grundsätzlich ist alles denkbare auch machbar, wobei die Funktion der Custom Post Types eine Art ist, mit WordPress das zu erreichen, was erreicht werden soll.
Serienmäßig kommt WordPress bereits mit einigen Post Types daher, zu nennen wären:
- Post (Post Type: ‘post’)
- Page (Post Type: ‘page’)
- Attachment (Post Type: ‘attachment’)
- Revision (Post Type: ‘revision’)
- Navigation menu (Post Type: ‘nav_menu_item’)
Ein Custom Post Type ist also nicht mehr als eine Erweiterung, eine weiterer Bereich, um etwas zu posten. Dabei ist ein Custom Post Type nicht auf eine spezielle Inhaltsart, wie eine statische Seite oder einen dynamischen Blogpost festgelegt. Ein Custom Post Type kann also jede Art von Inhalt darstellen, auch wenn die Darstellung statischen Inhalts nicht viel Sinn ergeben würde, da Seiten hierfür wesentlich besser geeignet wären.
Besonders gut jedoch eignet sich der Custom Post Type für einen weiteren, dynamischen (neben den Blogartikeln) Inhaltsbereich. Ein idealer Einsatzbereich wäre zum Beispiel die Integration eines Portfolios in ein Theme. Ein Portfolio ist dynamisch, es werden von Zeit zu Zeit weitere Einträge angelegt. Auch wenn ein Portfolio anders aussieht, es verhält sich dynamisch wie ein Blog.
Custom Taxonomies
Custom Taxonomies sind sozusagen eine Unterfunktion der Custom Post Types. Sie sorgen dafür, dass Custom Post Types kategorisiert und mit Schlagworten versehen werden können. Es sind Kategorien und / oder Tags für die WordPress Custom Post Types. Das Erstellen der Custom Taxonomies geht recht leicht, wir werden weiter unten darauf zurückkommen. Allerdings sind Custom Taxonomies noch viel umfassender und vielseitiger als dieser Artikel aufzuzeigen vermag. Damit beschäftige ich mich in einem zukünftigen Beitrag.
Custom Post Types im praktischen Einsatz
Mit Hilfe der WordPress Custom Post Types wird es dir recht leicht fallen, ein funktionelles Portfolio anzulegen. Gehen wir die nötigen Schritte einmal zusammen durch:
Custom Post Type registrieren
Füge den folgenden Code an das Ende der functions.php deines Themes (wp-content/themes/ihr Theme).
/**
*
* Registration unseres Custom Post Types "Portfolio"
*
*/
function ah_custom_post_type() {
$labels = array(
'name' => 'Portfolio Einträge',
'singular_name' => 'Portfolio',
'menu_name' => 'Portfolio',
'parent_item_colon' => '',
'all_items' => 'Alle Einträge',
'view_item' => 'Eintrag ansehen',
'add_new_item' => 'Neuer Eintrag',
'add_new' => 'Hinzufügen',
'edit_item' => 'Eintrag bearbeiten',
'update_item' => 'Update Eintrag',
'search_items' => '',
'not_found' => '',
'not_found_in_trash' => '',
);
$rewrite = array(
'slug' => 'portfolio',
'with_front' => true,
'pages' => true,
'feeds' => true,
);
$args = array(
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'trackbacks', ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => false,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => $rewrite,
'capability_type' => 'page',
);
register_post_type( 'portfolio', $args );
}
// Hook into the 'init' action
add_action( 'init', 'ah_custom_post_type', 0 );
Ein paar Worte zum Code
Der oberste Abschnitt bis hin zum $rewrite kümmert sich um das erweiterte Admin-Menü. Der weitere, mittlere, Teil sorgt für den Permalink mit dem Slug „portfolio“. Der untere Teil des Codes legt fest, welche Einzelteile unterstützt werden, wie zum Beispiel Titel, Editor, Excerpt, Beitragsbild und Kommentare.
Dein WordPress-Administrationsbereich zeigt dir nun den neuen Menüpunkt „Portfolio“, ebenso die Untermenü Punkte „Kategorien“ und „Schlagworte“.
Um nun mit dem Portfolio arbeiten zu können, braucht es noch etwas mehr als diesen positiv angelegten Menüpunkt. Wir müssen noch Templates erstellen, um das Portfolio korrekt im WordPress-Theme anzuzeigen.
Nötige Templates für den Custom Post Type
Die WordPress Template Engine wird die Templates für diesen Post Type automatisch erkennen, wenn sie im Format single-posttype.php für den einzelnen Post und archive-posttype.php für die Übersichtsseite vorliegen. Je nachdem, wie umfangreich dein Projekt werden soll, musst du nun ein bis zwei Templates erstellen, eines nennst du single-portfolio.php und eines archive-portfolio.php.
In diesem Beispiel legen wir nun das Template archive-portfolio.php an, um die Portfolio-Einträge alle auf einer Seite zu zeigen.
Custom Post Type anzeigen
Erstelle mit dem Editor deiner Wahl eine neue leere Seite und nenne sie archive-portfolio.php. Kopiere nun den Inhalt deiner page.php (oder auch der index.php) in dieses neu angelegte Template. Ersetze anschliessend die Beschreibung des Templates mit folgendem:
<?php
/**
* Template Name: Archive Portfolio Template
*/
Nun ist es wichtig, dem Template mitzuteilen, welche Art von Inhalt angezeigt werden soll. Hierzu platziere oberhalb des Loop folgenden Code:
<?php query_posts(array('post_type'=>'portfolio')); ?>
WICHTIG ZU WISSEN
Bitte gehe nun zum Menüpunkt „Einstellungen => Permalinks“ und speichere deine Permalinks einmal erneut ab. Tust du das nicht, so wird es beim Aufruf von www.ihre-seite.de/portfolio/ höchstwahrscheinlich einen 404-Fehler geben. Nach dem erneuten Abspeichern der Permalinks kann die Seite ohne Probleme aufgerufen werden.
Da die Seite „Portfolio“ physisch nicht vorhanden ist (aber problemlos aufgerufen werden kann), sollte man diesen Menüpunkt händisch über die Funktion „Links“ aufsetzen.
Alternativ kann man auch eine neue, leere Seite mit dem Titel Portfolio anlegen und das Template „Archive Portfolio Template“ auswählen. Damit wurde der nötige Menüpunkt automatisch generiert:
Fazit
Mit Custom Post Types ist es sehr leicht, die normale WordPress-Funktionalität um weitere Bereiche zu ergänzen. Grundsätzlich sind der Kreativität keine Grenzen gesetzt. Sogar sehr umfangreiche Aufgaben können hiermit gelöst werden. Ein gutes Beispiel hierfür ist die Website des Premium WordPress-Theme-Providers WooThemes.com, der dortige Menüpunkt „Themes“ wurde genauso – wenn auch sehr viel komplizierter – umgesetzt.