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

<code>
function post_type_movies() {
	register_post_type( 'movies', array('label' =&gt; __('Movies'), 'public' =&gt; true, 'show_ui' =&gt; true ) );
	register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
</code>

default-custom-post-type

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.

<code>
function post_type_movies() {
	register_post_type('movies', array('label' =&gt; __('Movies'), 'public' =&gt; true, 'show_ui' =&gt; true, 'supports' =&gt; array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments', 'revisions') ) );
	register_taxonomy_for_object_type('post_tag', 'movies');
}
add_action('init', 'post_type_movies');
</code>

custom-post-type

Standard-Agumente

<code>
// Args prefixed with an underscore are reserved for internal use.
$defaults = array('label' =&gt; false, 'publicly_queryable' =&gt; null, 'exclude_from_search' =&gt; null, '_builtin' =&gt; false, '_edit_link' =&gt; 'post.php?post=%d', 'capability_type' =&gt; 'post', 'hierarchical' =&gt; false, 'public' =&gt; false, 'rewrite' =&gt; true, 'query_var' =&gt; true, 'supports' =&gt; array(), 'register_meta_box_cb' =&gt; null, 'taxonomies' =&gt; array(), 'show_ui' =&gt; null );
</code>

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.

<code>
function post_type_movies() {
	register_post_type('movies', array('label' =&gt; __('Movies'), 'public' =&gt; true, 'show_ui' =&gt; true, 'supports' =&gt; array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments', 'revisions') ) );
	
	register_taxonomy( 'actor', 'movies', array( 'hierarchical' =&gt; true, 'label' =&gt; __('Actor') ) ); 
	register_taxonomy( 'production', 'movies',
		array( 'hierarchical' =&gt; false,
					 'label' =&gt; __('Production'),
					 'query_var' =&gt; 'production',
					 'rewrite' =&gt; array( 'slug' =&gt; 'production' )
				 )
	);
}
add_action('init', 'post_type_movies');
</code>

taxonomy-custom-post-type

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.