Erstellen eigener Post Bereiche – Custom Posttype

Bei der Nutzung von WordPress möchten wir einige Post auslagern und ein eigenes Themengebiet erstellen. Die Beiträge oder Post lassen sich in der Regel über die Kategorien einteilen. Doch was muss ich tun, wenn ich eine eigenen neuen Beitragsbereich erstellen möchte? Dann stößt WordPress an seine Grenzen. Natürlich würden wir jetzt nach einem geeigneten Plugin suchen. Unter dem Begriff „Custom Post Types“ finden wir allerhand nützliche Zusatztools. Doch an dieser Stelle möchte ich Euch zeigen, wie Ihr auf die eigene Art und Weise ein eigenes Plugin schreiben könnt um ein eigenen Betragsbereich zu erstellen. Grundkenntnis über die Programmiersprache von PHP wären sehr Hilfreich um den Artikel besser zu verstehen.

custom-posttype-menu

1. Das erste Plugin erstellen

Als Beispiel nehmen wir ein neues Themengebiet über Technik. Dort sollen Beiträge über die unterschiedlichsten Kategorien, wie PC, Handy, Tablet und Konsolen erscheinen.
Dazu erstellen wir ein neuen Ordner mit dem Namen: custom-posttypes im Installationsverzeichnis Eurer WordPressinstallation unter dem Pfad: \wp-content\plugins. Dort wiederum eine PHP-Datei mit der Bezeichnung posttype.php

Dort definieren wir als erstes den Kopfbereich als Kommentar die wichtigesten Plugininformationen.

/*Plugin Name: Custom Post Types
 Description: All the custom post types - by author*/

Nun ist das Plugin unter installierte Plugins sichtbar.

Custom Posttype Install

2. Die erste Funktion

Als nächstes erstellen wir eine Funtion mit den Namen: register_cpt_ressources

function register_cpt_ressources(){ }

in dem Array $labels definieren wir alle Felder bzw. Buttons, welche wir im Backend brauchen.
Zum Beispiel: Ein neuen Post anlegen, Löschen, editieren etc.

$labels = array( 
        'name' => _x( 'Technik', 'technik' ),
        'singular_name' => _x( 'Technik', 'technik' ),
        'add_new' => _x( 'Add New', 'technik' ),
        'add_new_item' => _x( 'Add New Item', 'technik' ),
        'edit_item' => _x( 'Edit Item', 'technik' ),
        'new_item' => _x( 'New Item', 'technik' ),
        'view_item' => _x( 'View Item', 'technik' ),
        'search_items' => _x( 'Search Item', 'technik' ),
        'not_found' => _x( 'No item found', 'technik' ),
        'not_found_in_trash' => _x( 'No item found in Trash', 'technik' ),
        'parent_item_colon' => _x( 'Parent Item:', 'technik' ),
        'menu_name' => _x( 'Technik Beiträge', 'technik' ),
    );

Dem Post geben wir noch einige Argumente bzw. Eigenschaften mit wie: Den Slug, die Kategorie, Menüeigenschaften etc. Anschließend Registrieren wir die Argumente bzw. Teilen WordPress unsere Einstellungen mit.

$args = array( 
        'labels' => $labels,
        'hierarchical' => false,
        'description' => 'Technik',
        'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions' ),
        'taxonomies' => array( 'technik-category' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,        
        'show_in_nav_menus' => false,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => array('slug' => 'technik'), // removes the /blog prefix set in permalink structure
        'capability_type' => 'post'
    );

    register_post_type( 'technik', $args );

3. Kategorien implentieren

Unsere Beiträge sollen zukünftig in eigene Kategorien unterteilt werden. Kategorien werden in WordPress als taxonomies bescheichnet. Wie bei den Beiträgen erstellen wir eine eigene Funktion:

$labels = array(
        'name'                       => _x( 'Categories', 'Taxonomy General Name' ),
        'singular_name'              => _x( 'Category', 'Taxonomy Singular Name' ),
        'menu_name'                  => __( 'Categories' ),
        'all_items'                  => __( 'All Categories' ),
        'parent_item'                => __( 'Parent Category' ),
        'parent_item_colon'          => __( 'Parent Category:' ),
        'new_item_name'              => __( 'New Category Name' ),
        'add_new_item'               => __( 'Add New Category' ),
        'edit_item'                  => __( 'Edit Category' ),
        'update_item'                => __( 'Update Category' ),
        'separate_items_with_commas' => __( 'Separate categories with commas' ),
        'search_items'               => __( 'Search categories' ),
        'add_or_remove_items'        => __( 'Add or remove categories' ),
        'choose_from_most_used'      => __( 'Choose from the most used categories' ),
    );

Anschließend definieren wir die benötigten Felder und Buttons und das Verhalten der Kategorien. Sollen diese später im Menü sichtbar sein. Gibt es eine Herarchie, sind diese Öffentlich zugänglich? Alle Einstellmöglichkeiten sind hier bei WordPress aufgelisstet.

$args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => false,
        'rewrite' => array('slug' => 'technik')
    );

Auch hier registrieren wir die Kaegorie bzw. die Taxonomie erneut.
Als Bezeichnung nehmen wir den Namen, welchen wir bei den Posts als Argument in folgender Zeile schon eingetragen haben.

 'taxonomies' => array( 'technik-category' ),
register_taxonomy( 'technik-category', 'technik', $args );

4. Registrieren von Posts und Kategorien

Bisher haben erst eine Bauanleitung geschrieben. Diese müssen wir nun der Wordinstallation registrieren. Dazu gibt WordPress Hilfestellung mit der Funktion: add_action

add_action( 'init', 'register_cpt_technik' );
add_action( 'init', 'register_cpt_technik_tax', 0 );

Custom Posttype Posts

Nun lassen sich neue Posts und Kategorien un unserem neuen Betragsbereich erstellen. In den nächsten Tagen folgt der Artikel über die Einbindung in das Theme. Das komplette Script könnt Ihr hier noch einmal downloaden.

icon-downloadDownload ZIP

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert