Wordpress 3.0 - Custom Post Types

1 | 5 Kommentare | 3129 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
  • graphic, motion & web design - kernreaktor - mutter kind turnen
  • Stefan arbeitet als Fachinformatiker und betreibt einen eigenen Blog, in dem er sich rund um das Thema Computer beschäftigt, hauptsächlich um das neue Betriebssystem Windows 7.

Kommentare: Wordpress 3.0 - Custom Post Types

Neuen Kommentar schreiben
Wie gebe ich die Events aus?
Beantworten

Hallo und danke erstmal für den tollen Artikel. Der hat mich schon ein gutes Stück weitergebracht. Habe mittlerweile einen neuen Post-Type "Events" erstellt (in der functions.php). Allerdings weiß ich nicht, wie ich im Frontend die Events ausgebe, bzw. wie bei den normalen Posts eine Auflistung aller Posts auf einer Seite bekomme.

Mein Ziel ist es, auf der Startseite eine Liste mit den Titeln der anstehenden Events zu haben.

Würde mich über Hilfe super freuen. Danke!

picsam am 12.10.2010 um 16:53
Re: Wie gebe ich die Events aus?
Beantworten

du musst den vorletzten Codeblock im Artikel verwenden. und eben nicht den content ausgeben. so in etwa:

 
HTML
1
2
3
4
5
6
<ul>
<?php $eventquerys = new WP_Query( array( 'post_type' => 'events', 'posts_per_page' => 5 ) );
while ( $eventquerys->have_posts() ) : $eventquerys->the_post(); ?>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_query(); ?>
</ul>
Moritz Kern am 12.10.2010 um 18:47
Re: Wie gebe ich die Events aus?
Beantworten

Danke für die schnelle Antwort. Wo genau, also in welcher Datei an welcher Stelle verwende ich den obigen Code? Das habe ich noch nicht so ganz raus.

picsam am 13.10.2010 um 09:05
Re: Wie gebe ich die Events aus?
Beantworten

das weiß ich auch nicht wo du die Liste genau haben mochtest. Da es sich aber um eine Liste handelt geh ich mal davon aus das die sidebar der richtige Platz sein könnte. Also den Code in die sidebar.php

Moritz Kern am 13.10.2010 um 09:34
Endlich
Beantworten

Endlich kommt das worauf ich bei Wordpress schon länger gewartet habe, Drupal hat es ja im Prinzip schon vor langer Zeit vorgemacht und nun bietet Wordpress einem die Möglichkeiten sein Blog um wesentliche Bereiche zu erweitern.

Ich bin gespannt wann Wordpress 3.0 als offizielle neue Version erscheint.

RolfMoczarski am 27.05.2010 um 13:17