WordPress – Eigene Post Types erstellen
WordPress 3.0 ist da und mit der neuen Version auch neue Funktionen wie register_post_type. Diese Funktion ermöglicht es uns auf einfachste Art neue Post Types zu definieren und Sie über das Backendpflegbar zu machen.
Dabei ist der Post Type sehr flexibel Konfigurierbar wie z.B. will ich das Sonderfelder angelegt werden können oder soll es einen Editor geben möchte ich ein Post Thumbnail usw.
Für was kann man es einsetzen?
also ich habe schon Einsatzmöglichkeiten gefunden z.B.:
- Kunden Statements oder Referenzen
- Das Team einer Firma auflisten
- Ein Verzeichnis für Personen oder Niederlassungen
- usw.
Also es gibt viele Möglichkeiten diese neue Funktion register_post_type zu nutzen.
Wie kann man sie nun benutzen?
Ein Beispiel :
In diesem Fall benutze ich es für das Team einer Firma. Ich möchte jeden Mitarbeiter anlegen und ein Bild dazu hochladen. Die Mitarbeiter werden dann auf einer Seite aufgelistet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function post_type_team() { register_post_type( 'team', array( 'label' => __('Team'), 'singular_label' => __('team'), 'public' => false, 'show_ui' => true, 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => array("slug" => "team"), 'supports' => array('title','editor','thumbnail'), 'menu_position' => 4, 'menu_icon' => get_bloginfo('template_url') . '/images/icons/team.png' ) ); } add_action('init','post_type_team'); |
Wenn man diesen Code in die functions.php einfügt und anschließend in das WordPress Backend schaut wird man im Menü einen neuen Punkt sehen mit dem Namen Team.
Dort kann ich ähnlich wie bei Seiten oder Posts neue Beiträge (in unserem Fall Teammitglieder) anlegen, eine Beschreibung eingeben und ein Bildhochladen und mehr bietet uns dieser neue Post type nicht.
Um diesen jetzt in einer Seite zu verwenden muss einfach in eine Seiten Template folgender Code eingefügt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | echo '<ul class="team">'."\n"; $pages = get_posts(array('numberposts' => 1000, 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'team')); foreach($pages as $page) : if ( has_post_thumbnail( $page->ID ) && ( $image = wp_get_attachment_image_src( get_post_thumbnail_id( $page->ID ), 'thumbnail' ) ) ) : $img_src = $image[0]; else : $img_src = ''; endif; echo '<li id="page_id_' . $page->ID . '">'; echo '<img title="' . $page->post_title . '" src="' . $img_src . '" alt="' . $page->post_title . '" />'; echo $page->post_title . "</li>\n"; endforeach; echo "</ul>\n"; |
In diesem Teil wir per get_posts unser neuer Post Type team abgerufen und ausgegeben.
Function Reference @ codex.wordpress.org: register_post_type
Tags: get_posts, register_post_type, Wordpress 3.0
