Erste Eindrücke der eigenen Post-Typen
Eine der sehr interessanten neuen Punkte an WordPress 3.0 sind eigene Post-Typen, die mit wenig Aufwand implementiert sind. Musste man früher an der Datenbank erweitern und die eigene Oberfläche dafür schreiben, so geht das nun mit wenigen Zeilen Code – daher einige kleine Einblicke in den aktuellen Stand, der sich sicher noch verändern kann.
Einfachste Lösung
function post_type_movies() {
register_post_type( 'movies', array('label' => __('Movies'), 'public' => true, 'show_ui' => true ) );
register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
Parameter für Meta-Boxen
Natürlich gibt es für die Funktion eine ganze Reihe von Parametern und so kann das Verhalten und das Aussehen der zugehörigen Edit-Seite recht einfach gesteuert werden, auch dazu ein kleines Beispiel mit zusätzlichen Meta-Boxen.
function post_type_movies() {
register_post_type('movies', array('label' => __('Movies'), 'public' => true, 'show_ui' => true, 'supports' => array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments', 'revisions') ) );
register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
Standard-Agumente
// Args prefixed with an underscore are reserved for internal use.
$defaults = array('label' => false, 'publicly_queryable' => null, 'exclude_from_search' => null, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => false, 'rewrite' => true, 'query_var' => true, 'supports' => array(), 'register_meta_box_cb' => null, 'taxonomies' => array(), 'show_ui' => null );
Inklusive der Custom Taxonomies
Im folgenden Beispiel wird zusätzlich zu diesem Post-Type eine Taxonomie in zwei Möglichkeiten integriert; eigene Tags und Kategorien zum Post-Type Movies, also einmal als klassischen Tag, ohne Hierarchie und einmal als Kategorie, also Tag mit Hierarchien.
function post_type_movies() {
register_post_type('movies', array('label' => __('Movies'), 'public' => true, 'show_ui' => true, 'supports' => array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments', 'revisions') ) );
register_taxonomy( 'actor', 'movies', array( 'hierarchical' => true, 'label' => __('Actor') ) );
register_taxonomy( 'production', 'movies',
array( 'hierarchical' => false,
'label' => __('Production'),
'query_var' => 'production',
'rewrite' => array( 'slug' => 'production' )
)
);
}
add_action('init', 'post_type_movies');
Da ist definitiv die eine oder andere spannende Sache dabei und vielleicht kann mit den Beispielen der oder andere seine ersten Spielereien machen, bevor es im Livegeschehen ernst wird.





11. Februar 2010 um 12:21
Scheint mir eine echt gute Sache zu sein. Bisher ist es ja doch noch recht umständlich. Eigene Kategorie, diese ausschliesen, eigenes Template … Wir mir scheint wird das um einiges einfacher so.
11. Februar 2010 um 17:49
Gute Sache
11. Februar 2010 um 20:26
Da dürfen wir wohl sehr gespannt sein! In der Version 3.0 soll es ja viele Neuerungen geben. Hoffentlich dauert das Update von WordPress MU nicht so lang…
Gruß
11. Februar 2010 um 21:01
Ist schon abzusehen wann das WP 3.0 in etwa erscheinen wird ?
11. Februar 2010 um 21:29
@Martin: vermutlich im April
12. Februar 2010 um 11:20
Oha, das ist doch, worauf ich lange gewartet bzw. wofür ich nach geeigneten Plugins gesucht habe. Hab auch einige getestet, aber so richtig das tolle war nicht dabei. Bin gspannt, wie das dann in 3.0 implementiert sein wird.
12. Februar 2010 um 21:56
Kann mir einer sagen, was das Anwendungsgebiet solcher Post-Typen ist. Kann mir nur schwer vorstellen, wofür sich das eignet. Wäre nett!
13. Februar 2010 um 22:56
Dann kann man neben Artikel auch z. B. Produkte betreiben. Dazu eignen sich dann die neu hinzukommenden Thumnails. Wäre natürlich komfortabler, wenn man ein neuen Post-Typ bzw. eine Taxonomie direkt im Admin erstellen könnte.
16. Februar 2010 um 12:10
@Paul: Ich würde meiner Webseite dann z.B. eigene Post-Typen für Rezensionen und Kurzgeschichten spendieren. Zum einen kann ich da dann sicher einfach die Editorseite anpassen. Den Buchautor hänge ich z.B. im Moment per Benutzerdefiniertem Feld an die Rezensionen und gebe ihn so auch im entsprechenden Kategorietemplate aus. Das Setzen des Feldes vergesse ich aber oft, ist ja in der allgemeinen Dropdown-Box versteckt. Wenn ich im Moment eine eigene Box für den Buchautor auf der Editorseite einbinde, erscheint die bei allen Postings, auch bei denen, die keine Rezension darstellen. Das wäre schon mal toll, die Autor-Box nur bei den Rezensionen zu haben.
Zum anderen wird es dann sicher einfacher, das auf der Webseite zu trennen. Ich will die Kurzgeschichten z.B. eigentlich komplett vom Rest des Blogs trennen, die sollen nicht in der gleichen Tag-Cloud erscheinen und nicht im RSS-Feed oder den zeitbasierten Archiven. Das müsste damit dann hoffentlich auch gehen. Ich habe so das Gefühl, WP 3.0 wird großartig. :-)
16. Februar 2010 um 20:54
Ich frage mich gerade wie man das dann im Template aufruft?
if ( have_posts('movies') ) : while ( have_posts('movies') ) : the_post('movies');
??
16. Februar 2010 um 21:22
@Steffen: nein, einfach den Query nutzen:
query_posts('post_type=movies')17. Februar 2010 um 18:30
Wird es dann auch möglich ohne Corehack zukünftige Posts (post=future) im Kalender darzustellen? Derzeit ist das eine Qual..