Custom-Post-Types in WordPress mit eigener Taxonomie – mit Video-Training
Seit WordPress 3.0 besteht die Möglichkeit, dass man sich eigene
Inhalts-Typen (sogenannte Custom-Post-Types) in Plugins oder in der
functions.php seines eigenen Themes definieren kann.
Custom-Post-Types gehören generell zu den interessantesten
Neuerun...
41 Minuten
Podcast
Podcaster
Beschreibung
vor 13 Jahren
Seit WordPress 3.0 besteht die Möglichkeit, dass
man sich eigene Inhalts-Typen (sogenannte
Custom-Post-Types) in Plugins oder in der functions.php
seines eigenen Themes definieren kann. Custom-Post-Types gehören
generell zu den interessantesten Neuerungen, die mit WordPress
3.0 eingeführt wurden, denn sie ermöglichen es jedem Plugin- oder
Theme-Entwickler auf eigene Inhalts-Typen zurückzugreifen, die
wie Seiten oder mit eigener Taxonomie wie Artikel behandelt
werden können.
In diesem Tutorial möchte ich euch genau erklären wie ihr
Custom-Post-Types verwendet, weiterhin findet ihr am Ende noch
ein 40 minütiges Video-Training zu
Custom-Post-Types, dieses entstammt meinem neuen
WordPress-Video-Training.
Anzeige:
Was sind Custom-Post-Types und wie funktionieren sie …
Stellen wir uns einmal vor, wir haben eine einfache Webseite von
einer kleinen Firma: Die Webseite verfügt über einen Blog-Bereich
(hier kommen Artikel und Kategorien zum Einsatz) und einige
normale Seiten, wie z.B. Über uns, Partner, Kontakt und
Impressum, diese Einzelseiten werden natürlich über die „Seiten“
Funktion von WordPress verwaltet.
Nun möchte der Seitenbetreiber neben den zwei Bereichen, Artikel
und Seiten, noch einen weiteren Bereich Produkte in dem er nach
Kategorien sortiert seine Produkte auflisten kann. Hier könnte
man zwar die Artikel-Funktion missbrauchen, dass würde in diesem
Fall aber nicht funktionieren, da diese ja bereits regulär für
den Blog verwendet wird.
Genau hier würden nun Custom-Post-Types ins Spiel kommen, die
prinzipiell genau so aufgebaut sind wie die Artikel in WordPress.
Stellt auch also einfach vor ihr hättet eine zweite Artikel
Funktion, die allerdings auch direkt Produkte heißt und einen
eigenen Menüpunkt im Backend hat. Weiterhin sind die Artikel, die
über den Custom-Post-Type Produkte eingefügt wurden, völlig
unabhängig von den eigentlichen Artikeln.
Um das ganze etwas besser zu verdeutlichen seht euch einmal den
beigefügten Screenshot an:
Auf dem Screenshot ist der in einem Plugin angelegte
Custom-Post-Type Produkt zu sehen.
Tipp: Custom-Post-Types können auch für
komplexere Funktionen verwendet werden, wie z.B. die Verwaltung
einer Slideshow. Ein gutes Beispiel ist hier der NivoSlider,
dessen Backend ebenfalls auf einem Custom-Post-Type basiert.
Custom-Post-Types als Plugin oder im Theme (functions.php)
Es gibt zwei Möglichkeiten Custom-Post-Types anzulegen, zum einen
in der functions.php des aktiven Themes oder in einem einfachen
kleinen Plugin. Beide Varianten haben wichtige Vor- und
Nachteile.
Wann sollte man Custom-Post-Types in der functions.php
definieren
Es macht nur dann Sinn Custom-Post-Types in einem Theme direkt in
der functions.php zu definieren, wenn es sich dabei um Theme
relevante Post-Types handelt, wie z.B. für eine Slideshow. Denn
stellen wir uns einmal vor, wir würden die Produktverwaltung mit
dem Theme verbinden und irgendwann das Theme wechseln, so wäre
auch die Produktverwaltung wieder verschwunden. Man müsste nun
die Custom-Post-Type Definition manuell in die functions.php des
neuen Themes übernehmen, dass wäre nicht wirklich komfortabel.
Wann sollte man Custom-Post-Types in einem extra Plugin
definieren
Wenn es sich um Inhaltsbezogene Post-Types handelt, die nicht
direkt mit dem Theme zusammenhängen wie z.B. die
Produktverwaltung. So kann man das Theme wechseln so oft man
will, ohne das dies direkten Einfluss auf die definierten
Custom-Post-Types hat.
Wie werden Custom-Post-Types in einem Theme
definiert:
Falls noch nicht vorhanden legt euch einfach in eurem Theme
Ordner ( /wp-content/themes/EUER-THEME-NAME/ ) eine neue PHP
Datei namens functions.php an, dort könnt ihr dann die folgenden
Funktion reinschreiben.
Wie werden Custom-Post-Types in einem Plugin
definiert:
Legt euch in eurem Plugins Ordner ( /wp-content/plugins/ ) eine
neue PHP Datei an, wie ihr diese Datei nennt bleibt euch
überlassen. In diesem Beispiel nennen wir sie einfach passend zur
Produktverwaltung products.php. Die products.php muss folgende
Angaben beinhalten:
Ersetzt einfach die Daten aus dem Beispiel mit den euren.
Tipp: Noch mehr interessante WordPress Workshops
findet ihr in meinem neuen WordPress-Video-Training.
Wie werden Custom-Post-Types angelegt
Um in WordPress Custom-Post-Types anzulegen wird die Funktion
register_post_type() verwendet, schaut euch das folgende Beispiel
aus der Produktverwaltung an:
Die Argumente die dem Post-Type mit übergeben werden sind
eigentlich selbsterklärend, eine genaue Liste der Post-Type
Funktionen ist in der WordPress Dokumentation zu finden:
http://codex.wordpress.org/Function_Reference/register_post_type#Arguments
Mit der oben gezeigten Funktion lassen sich einfache Post-Types
anlegen die vom Funktionsprinzip den Seiten in WordPress ähneln.
Um der Produktverwaltung nun noch Kategorien hinzufügen zu
können, muss eine eigene Taxonomie für diesen Post-Type angelegt
werden.
Taxonomie für Custom-Post-Types anlegen
Um eine Taxonomie zu erzeugen, wird die Funktion
register_taxonomy() verwendet:
// WordPress Hook der die Funktion "create_product_taxonomies"
beim initialisieren von WordPress aufruft add_action( 'init',
'create_product_taxonomies', 0 ); // Selbst definierte Funktion die
wir oben an den Hook übergeben function create_product_taxonomies()
{ // Die Labels sind für die Ausgaben im Backend zuständig $labels
= array( 'name' => __( 'Kategorien' ), 'singular_name' => __(
'Kategorie' ), 'search_items' => __( 'Kategorien durchsuchen' ),
'all_items' => __( 'Alle Kategorien' ), 'parent_item' => __(
'Hauptkategorie' ), 'parent_item_colon' => __( 'Hauptkategorie:'
), 'edit_item' => __( 'Kategorie bearbeiten' ), 'update_item'
=> __( 'Kategorie aktualisieren' ), 'add_new_item' => __(
'Neue Kategorie hinzufügen' ), 'new_item_name' => __( 'Neue
Kategorie Name' ), 'menu_name' => __( 'Kategorien' ), ); // Name
der Taxonomie - array('product') verbindet diese Taxonomie mit dem
Post-Type product
register_taxonomy('product_category',array('product'), array(
'hierarchical' => true, 'labels' => $labels, 'show_ui' =>
true, 'query_var' => true, 'rewrite' => array( 'slug' =>
'kategorie' ), )); }
Die genauen Informationen zu den Argumenten könnt ihr der
WordPress Dokumentation entnehmen:
http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments
So einfach lassen sich Custom-Post-Types definieren, falls ihr
weitere Informationen benötigt seht euch das folgende
Video-Training an. In dem Video-Training wird auch
gezeigt, wie die Post-Types im Theme wieder ausgegeben
werden.
Custom-Post-Type im Theme ausgeben
Um Custom-Post-Types im Theme auszugeben wird folgender
modifizierter Content-Loop benötigt:
Custom-Post-Types
Video-Training
Seit der WordPress-Version 3.0 gibt es die Möglichkeit,
sogenannte Custom-Post-Types zu definieren. Bei diesen
Custom-Post-Types handelt es sich um Inhaltsarten, die mit
Artikeln vergleichbar sind, sie lassen sich allerdings einzeln im
Theme abrufen und sind so flexibler für eigene Inhalte.
So lassen sich z.B. neben Artikeln auch DVD-Sammlungen,
Bücher-Listen oder Mitglieder-Verwaltungen realisieren.
Weitere Informationen zu Custom-Post-Types gibt es unter:
http://codex.wordpress.org/Post_Types#Custom_Types
Podcast Info:
Titel: Custom-Post-Types – was ist das, wozu kann man sie
verwenden und wie funktionieren sie
Autor: Pascal Bajorat
Länge: 40 Min
Dateigröße: 280 MB
Das Video ist ein Teil meins achtstündigen
WordPress-Video-Trainings.
Video auf Vimeo ansehen…
Ähnliche Artikel:
WordPress Multisite (MU) und Domain-Mapping WordPress
Multisite (MU) installieren und konfigurieren WordPress 3.2 wurde
veröffentlicht und bringt ein komplett neues Backend
Weitere Episoden
8 Minuten
vor 7 Jahren
8 Minuten
vor 8 Jahren
35 Minuten
vor 8 Jahren
5 Minuten
vor 8 Jahren
9 Minuten
vor 8 Jahren
In Podcasts werben
Kommentare (0)