Wordpress 3.0 - Custom Post Types

1 | 6069 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "Wordpress 3.0 - Custom Post Types" mit Ihrem Wissen!

Anzeige Hier werben

Wordpress 3.0 (Veröffentlichung voraussichtlich Anfang - Mitte Juni 2010) führt als neue mächtige Features die Custom Post Types und Custom Taxonomy ein.

Bisher gab es in Wordpress nur Pages (Seiten) und Posts (Artikel). Jeder Artikel hatte allerdings den gleichen Typ. Mit den Custom Post Types lassen sich nun beliebig viele Post Types anlegen. Dies ermöglicht Beispielsweise die Erstellung komplexerer Webseiten, wie eines Lexikons, eines Forums, oder eines Wikis, welche neben dem eigentlichen Blog nicht mit einem Inhaltstypen auskommen. Auch die Erstellung komplexer Plugins wird durch dieses Feature in Zukunft einfacher.

Das Tutorial zeigt kurz die Verwendung der neuen Features und geht dabei weniger auf die einzelnen Argumente der Funktionen ein.

In diesem Tutorial nehmen wir an man benötigt einen Post Type für Veranstaltungen (Events).

Custom Post Types

Um Custom Post Types anzulegen muss man die functions.php des Templates bearbeiten und dort mittels der Funktion register_post_type(), welche für die Erweiterung zuständig ist, folgenden Code hinzufügen:

functions.php  
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function post_type_events() {
register_post_type(
           'Events',
           array('label' => __('Events'),
           'singular_label' => __('events'),
           'public' => true,
           'show_ui' => true,
           'capability_type' => 'post',
           'hierarchical' => false,
           'rewrite' => array("slug" => "events"),
           'supports' => array('title','editor','trackbacks','custom-fields','comments','revisions'),
           'menu_position' => 4
           )
         );
}
add_action('init','post_type_events');

Im Backend erscheint nachher unter Artikel der neue Post Type "Events"

Bild zu Wordpress 3.0 - Custom Post Types
Custom Post Type "Events"

Legt man nun einen neuen Event namens "meine erste Veranstaltung" an, kann diese unter der URL: www.example.de/events/meine-erste-veranstaltung/ aufgerufen werden. (Permalinkstruktur: /%postname%/)

Custom Taxonomy

Einziger Nachteil der neuen neuen Custom Post Types ist, dass diese nicht die Standard Kategorien oder Tags verwenden können.

Jedoch bietet Wordpress 3.0 die Möglichkeit mittels register_taxonomy() für jeden Post Type eine eigene Taxonomie zu erstellen.

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function post_type_events() {
register_post_type(
           'Events',
           array('label' => __('Events'),
           'singular_label' => __('events'),
           'public' => true,
           'show_ui' => true,
           'capability_type' => 'post',
           'hierarchical' => false,
           'rewrite' => array("slug" => "events"),
           'supports' => array('title','editor','trackbacks','custom-fields','comments','revisions'),
           'menu_position' => 4
           )
         );
    
register_taxonomy( 'Location', 'Events', array( 'hierarchical' => true, 'label' => __('Location') ) ); }
add_action('init','post_type_events');

Im Backend schaut dies nun folgendermaßen aus:

Bild zu Wordpress 3.0 - Custom Post Types

Nun haben wir einen neuen Post Type mit seiner eigenen Taxonomy im Backend angelegt.

Wer nicht selber Programmieren will, kann z.B. auch das Plugin Simple Taxonomies verwenden und eine Custom Taxonomy anzulegen.

Für das Frontend werden die Post Types wie bisher ausgelesen, nur dass der 'post_type' nicht pages oder posts sind, sondern eben der angelegte Custom Post Type 'events':

 
PHP
1
2
3
4
5
6
7
8
9
<?php 
$eventquerys = new WP_Query( array( 'post_type' => 'events', 'posts_per_page' => 5 ) );

while ( $eventquerys->have_posts() ) : $eventquerys->the_post();
    the_title('<h2>','</h2>'); ?>
    <div class="content">
        <?php the_content(); ?>
    </div>
<?php endwhile; ?>

Der Post Type kann nach wie vor mittels get_post_type( $post_id ); ermittelt werden.

Um die Event-Kategorien eines Posts auszugeben kann man get_the_term_list() verwenden.

 
PHP
1
2
$event_list = get_the_term_list( $post->ID, 'events', '<strong>Event:</strong> ', ', ', '' ); 
if (!empty($event_list)) echo $event_list;

Aktuell bietet Wordpress 3 keine Möglichkeit mehrere Taxonomies auzugeben. Abhilfe schafft hier aktuell das Plugin: Query Multiple Taxonomies


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 2 Personen an der Seite "Wordpress 3.0 - Custom Post Types" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Wordpress 3.0 - Custom Post Types" hier bearbeiten.

Mitarbeiter