WordPress Custom Post Types und Custom Taxonomies für Dummies

wordpress logo custom-post-typeDieser Artikel richtet sich an alle WordPress-Bastler, die etwas mehr aus Ihrem Blog heraushholen möchten, aber noch nicht genau wissen, wie Sie es anstellen sollen.

In einem älteren Artikel habe ich bereits die wichtigsten Gründe  für WordPress als Content Management System zusammengefasst, bin aber nicht näher auf die Custom Post Types eingegangen, wobei genau diese Funktion eine der interessantesten ist, wenn es darum geht, WordPress als CMS einzusetzen.

Custom Post Types kann jeder!

Gehen wir mal davon aus, dass wir unseren Blog mit einem Newsbereich ergänzen und einen Bereich für Filmvorstellungen einbinden möchten. Früher hätten wir das Ganze in Blogartikel integriert und eine neue Kategorie dafür angelegt, was natürlich alles andere als optimal ist. Oder wir  haben dazu ein Plugin bzw. ein Theme installiert, was eigentlich nie genau das gemacht hat, was wir eigentlich vorhatten. Vergesst diese Notlösungen. Dafür gibt es jetzt Custom Post Types.

Ganz egal was Ihr vorhabt, mit Custom Post Types lässt sich (fast) alles realisieren. Ich behaupte mal, dass die wenigsten Blogger sich je damit befasst haben, aber genau auf dieses Feature warten. Vielen ist einfach nicht klar, was Sie damit anrichten können und wie einfach die ganze Geschichte ist. Jeder der schon einmal  an einem WordPress rumgebastelt hat, kann auch mit Custom Post Types umgehen. Ihr müsst nur weiterlesen 🙂

Das sind Custom Post Types und Custom Taxonimies

Custom Post Types und Custom Taxonomies

Von Haus aus bietet WordPress seit jeher dem Blogger die Post-Types „Artikel“ für Blogartikel und „Seiten“ für statische Inhalte (Impressum, Über uns, etc.) an. „Tags“ und „Kategorien“ bezeichnet man hingegen als Taxonomien.

Seit der Einführung von WordPress 3.0 können User Ihre eigene Artikeltypen erstellen und so neue Bereiche im Blog „erschaffen“. Wie ihr an der Grafik sehen könnt, habe ich einen „Blog im Blog“ angelegt, da ich WordPress für ein größeres Projekt nicht als Blog nutze, sondern als CMS – mit integriertem Blog sozusagen. Natürlich bleibt euch die Wahl, was für Bereiche Ihr einrichten möchtet. Eine Film-Datenbank, Nachrichten und ein Verzeichnis sind nur einige wenige Beispiele.

Wie erstelle ich ein Custom Post Type?

Jetzt wird es spannend, aber keine Angst, es ist wirklich nicht schwer. Ihr müsst nur ein paar Zeilen Code in die functions.php eures momentan aktiven Themes einbauen.

Post Type und passende Taxonomie registrieren:


add_action('init', 'post_type_news');
function post_type_news()
{
register_post_type('news',
array(
'label' => __('News'),
'public' => true,
'_builtin' => false,
'show_ui' => true,
'has_archive' => true,
'supports' => array('thumbnail','title','editor','excerpt','comments' ) ) );

register_taxonomy( 'stichworte', 'news',
array(
'hierarchical' => false,
'label' => __('Stichworte'),
'query_var' => 'stichworte',
'rewrite' => array( 'slug' => 'stichworte' ) ) );
}

Das Beispiel oben zeigt den Codeschnipsel für den neuen Post Typ „News“ und die dazugehörige Taxonomie „Stichworte„. Eine Kategorie-Taxonomie habe ich weggelassen, kann aber natürlich noch hinzugefügt werden. Die Arrays könnt (und solltet) Ihr inviduell anpassen. Im folgendem zum Verständis einige Erläuterungen:

Für Post Types:
'label' => __('Blog')– Der Labeltext für den Button im Adminbereich, dient der Übersicht 😉
'supports' => array('editor') – Hier können verschiedene Standardfunktionen aktiviert werden. Wird der Editor benötigt? Brauchen wir einen Titel für die Artikel? Kommentarfunktion erwünscht? Thumbnails? usw..

Für Taxonomies:
'hierarchical' => false – Damit legen wir fest, ob eine Taxonomie hierarisch aufgebaut ist (z.B. Kategorien + Unterkategorien) oder nur auf einer Ebene liegt, wie es bei „Tags“ der Fall ist.
'query_var' => 'blogtags' – Damit können wir überall im Theme unsere Custom Post Types abfragen und unterbringen. Die neuesten Artikel auf der Startseite, die letzten Kommentare und Widgets in der Sidebar sind damit kein Problem.

Alle Optionen zum rumbasteln findet ihr im offiziellen WordPress Codex. Probiert am besten alles aus, damit Ihr die für euch passende Konfiguration zusammenbekommt, es kann dabei nix kaputtgehen 😉

Übrigens: Custom Post Types erzeugen auch RSS-Feeds. Diese könnt Ihr so aufrufen: http://www.webseite.de/feed/?post_type=deinposttype

Custom Post Types und SEO

Custom Post Types eignen sich hervorragend  für SEO. Eure Custom Post Types erhalten einen eigenen „URL Slug“ und heben sich damit von den Standard WordPress Permalinks ab.

WordPress URL mit der Permalink Einstellung /%postname%/:
http://www.webseite.de/artikel/

Custom Post Type URL für den Newsbereich:
http://www.webseite.de/news/artikel/

Auch für die Taxonomien können eigene URL Slugs festgelegt werden.

SEO & Sitemap Plugins

Die meisten SEO Plugins können mittlerweile wunderbar mit Custom Post Types umgehen. Einzig „Gregs High Performance SEO“ und die aktuelle „wpSEO“ Version unterstützten die neuen Möglichkeiten noch nicht. Sergej von wpSEO.de hat mir aber versichert, dass dies beim nächsten großen Update seines beliebten Plugins der Fall sein wird.

Empfehlen möchte ich deshalb vorerst das kostenlose und umfangreiche Plugin WordPress SEO by Yoast, dass alle Funktionen und Einstellungen auch für Custom Post Types möglich macht und durch die integrierte Sitemapfunktion in dieser Hinsicht keine Probleme auftreten. Das Google XML Sitemaps Generator Plugin, welches auf den meisten Blogs zum Einsatz kommt, unterstützt aussschliesslich in der aktuellen Betaversion Custom Post Types. Wenn ihr das Plugin also weiterhin nutzen möchtet, dann installiert euch die Betaversion.

Für die ganz Faulen 😉

Wem das Einbinden des Codes zuviel Arbeit ist, kann auch Plugins nutzen, um komfortabel über die WordPress Adminoberfläche Custom Post Types zu erstellen. Dafür scheint folgendes Plugin sehr beliebt zu sein, habe es aber noch nicht angetestet: http://wordpress.org/extend/plugins/custom-post-type-ui/

Empfehlenswerte und ausführliche Tutorials zum Thema (Englisch):

http://www.wpbeginner.com/wp-tutorials/how-to-use-custom-post-types/

http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

12 Kommentare

  1. René April 19, 2011 1:14 pm 

    Hey, danke für die Infos, finde das Thema interessant. Vllt. eine etwas naive Frage. Wenn ich jetzt vor hätte die Permalink-Struktur im Blog umzustellen, von url/jahr/monat/post auf uhr/cat/post ginge das ja mit nem entsprechenden Plugin o.ä. und dem passenden 301er.

    Ich habe mir aber schon länger gedacht, dass es doch eine schicke Lösung wäre, wenn man alle bisher veröffentlichten Einträge bei ihrer URL belassen könnte und alle ab jetzt veröffentlichen Einträge den neuen Aufbau erhalten.

    Wäre dies damit umsetzbar, oder hab eich da etwas falsch verstanden? Sozusagen alle neuen Beiträge als anderen Custom Post Type. Wäre dankbar für nen Hinweis.

  2. Jonas April 19, 2011 1:28 pm 

    Wäre natürlich machbar, gerade weil eine URL Umstellung auch mal nach hinten losgehen kann 😉 Du kannst mit Custom Post Types einen neuen Bereich für Blogartikel anlegen, der die gleichen Funktionen hat wie die Standardartikel und sogar die bereits vorhandene Kategoriebasis und die Tagbasis weiterverwenden.

  3. René April 19, 2011 1:29 pm 

    Danke, dann beschäftige ich mich mal genauer damit.

  4. Thomas April 20, 2011 10:12 am 

    Danke für das Tutorial. Für einfache Artikel würde ich keine Custom Post Types nutzen. Dafür gibt es doch wirklich die verschiedenen Kategorien.

    Ich nutze als Permalink einfach /%category%/%postname%/. Sollte doch aufs gleiche rauskommen, oder nicht?

    Dennoch sind die Custom Post Types ne echte Innovation und schön umgesetzt von WordPress. Habe schon lange vor damit ein paar Themes auszustatten. Gerade Portfolio oder Produkt Seiten mit Bildern sollten sich damit gut umsetzen lassen.

  5. Jonas April 22, 2011 9:01 am 

    @Thomas
    Klar geht es bei einfachen Artikeln auch ohne, aber ob es jetzt ein neuer Newsbereich ist oder etwas aufwendigeres, ich würde trotzdem zu Custom Post Types raten, alleine schon wegen der single.php, die ansonsten nur über Umwege angepasst werden kann, falls mehr als ein Artikellayout erwünscht ist. Für jeden Post Typ lassen sich z.B. ganz einfach individuelle Single.php’s erstellen (single-posttype.php) und dazu kommt dann noch die bessere Übersicht im Adminbereich.

  6. Thomas April 22, 2011 4:50 pm 

    Klar, für mehrere Artikel Layouts sind Custom Post Types natürlich recht praktisch – da muss ich dir recht geben ;9

  7. Trendy April 24, 2011 7:55 am 

    Das sieht ja richtig dolle aus und da fällt mir auch gleich das eine oder andere Kundenprojekt ein, wo ich das vor der Integration dieser Funktionen schon gut gebrauchen hätte können. Was nicht war kann aber noch kommen und gerade bei CMS Projekten können diese Funktionen das Leben auch im Backend einfacher und übersichtlicher gestalten.

  8. Lukas Oktober 5, 2012 11:13 am 

    Nur um sicher zu sein – hierdurch wird dem Leser ein Mehrwert (bessere Übersicht) ermöglicht und dem Autoren die bessere Verwaltung verschiedener Artikel/Themen? Verwirtt man hiermit Google und Co oder ist es der Suchmaschine völlig egal?

  9. Sam April 2, 2014 5:16 pm 

    Hallo, ich habe Probleme bei der Ausgabe der Taxonomie.

    Per WP-PHP-Schnippsel „the_taxonomies();“ wird mir das Tag + Name meiner erstellen Taxonomie ausgeben. Und zwar so:

    Standort: Frankfurt

    Ich hätte allerdings gerne nur das Wort „Frankfurt“ welches Tag soll ich da verwenden? Ich habe schon diverse Schnippsel durchprobiert 🙁

Schreibe einen Kommentar