Lesefortschritt:

Workshop I: Custom Post Types erstellen – ganz ohne Plugin

23. Februar 2021 | functions.php, WordPress

Dieser Beitrag beinhaltet 1214 Wörter. – Geschätzte Lesezeit: ca. 7 Minuten.

WordPress bietet «out of the box» einzig die Beiträge als Post-Types an. Wenn Ihre Website wächst, ist das möglicherweise zu wenig und Sie wünschen sich weitere Möglichkeiten. Das ist kein Problem: Sie können sich beliebig viele Custom Post Types erstellen. Dieser Tipp erklärt, wie das geht.

Wenn Sie einen Custom Post Type erstellen, wird er Ihnen neben den Seiten und Beiträgen im Backend dargestellt. Das erleichtert die getrennte Verwaltung und bietet zahlreiche Optionen – auch bei der Präsentation.

Custom Post Types lassen sich auch über einschlägige Plugins in Ihrer WordPress-Installation einbinden. Eines der bekanntesten ist Custom Post Type UI. Es ist aber auch möglich das Projekt in Eigenregie an die Hand zu nehmen. So schwierig ist das nämlich nicht.

Folgender Code muss in die Datei functions.php kopiert werden. Diese finden Sie unter Design/Theme-Editor.

function custom_post_type_movie() {

//Bezeichner im Backend

$labels = array(
    'name'               => _x( 'Filme', 'post type general name' ),
    'singular_name'      => _x( 'Film', 'post type singular name' ),
    'add_new'            => __( 'Neuen Film anlegen'),
    'add_new_item'       => __( 'Neuen Film anlegen' ),
    'edit_item'          => __( 'Film bearbeiten' ),
    'new_item'           => __( 'Neuer Film' ),
    'all_items'          => __( 'Alle Filme' ),
    'view_item'          => __( 'Film ansehen' ),
    'search_items'       => __( 'Filme durchsuchen' ),
    'not_found'          => __( 'Keine Filme gefunden' ),
    'not_found_in_trash' => __( 'Keine Filme im Papierkorb gefunden' ),
    'parent_item_colon'  => '',
    'menu_name'          => 'Filme'
);

// Werte des neuen Custom Post Types

$args = array(
    'labels'              => $labels,
    'description'         => 'Dies sind meine Filme',
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'publicly_queryable'  => true,
    'exclude_from_search' => false,
    'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail' ),
    'taxonomies'          => array( 'post_tag', 'category' ),
    'has_archive'         => true,
    'can_export'          => false,
    'menu_position'       => 5,
    'capability_type'     => 'post',
    'rewrite'             => array('slug' => 'movies' )
);

register_post_type( 'movie', $args );
}

add_action( 'init', 'custom_post_type_movie' );

Das obige Exempel würde sich beispielsweise für eine Filmdatenbank eignen. Je nachdem, was Sie mit den Custom Post Types beabsichtigen, werden Sie die Vorgaben mit den eigenen Namen und Bezeichnern ersetzen.

Zur Funktion des Codes:

  • In den Codezeilen 6-18 wird festgelegt, wie der neue Custom Post Type im Backend dargestellt und bezeichnet wird. Die Bezeichnungen sind selbsterklärend und können von Ihnen frei angepasst werden.
  • In den Zeilen 24-40 wird definiert, welche Funktionen dem Posttype zugewiesen werden
    • Zeile 24: label
      Diese Angaben werden aus dem oben erklärten Part des Codes übernommen
    • Zeile 25: description
      Eine kurze Beschreibung des Custom Post Types
    • Zeile 26: hierarchical
      Legt fest, ob Custom Post Type hierarchisch ist, ob also Elternelemente festgelegt werden können. In diesem Beispiel wäre das nicht der Fall; falls gewünscht könnte man «true» setzen.
    • Zeile 27: public
      Legt fest, inwiefern der Custom Post Type für Autoren und Leser sichtbar ist. In der Regel ist das gewünscht. Darum «true»
    • Zeile 28: show_ui
      Legt fest, ob im Backend ein Standard-Interface zum Bearbeiten angezeigt wird. Ohne das «true» liesse sich der Post Type m Backend nicht editieren.
    • Zeile 29: show_in_menu
      Legt fest, ob der Custom Post Type im Menü des Backends angezeigt wird. Auch das ist in aller Regel gewünscht.
    • Zeile 30: show_in_nav_menus
      Legt fest, ob der Custom Post Type zu Menüs auf der Seite hinzugefügt werden kann. Mindestens können sollte man das schon – auch wenn die Option womöglich gar nicht genutzt wird.
    • Zeile 31: show_in_admin_bar
      Legt fest, ob der Custom Post Type in der Adminleiste angezeigt wird. Das betrifft den Punkt «neu» in der Titelleiste. In der Regel ist das praktisch.
    • Zeile 32: publicly_queryable
      Legt fest, ob eine Suche aus dem Frontend heraus möglich ist. Hier steht «true» – wenn der Post-Type nicht durchsucht werden sollte, müssten Sie «false» eingeben.
    • Zeile 33: exclude_from_search‘
      Legt fest, ob Elemente des Custom Post Types in den Suchergebnissen im Frontend ausgeschlossen werden. Wenn in Zeile 32 «true» steht, sollte hier «false» stehen – bzw. umgekehrt.
    • Zeile 34: supports
      Legt fest, welche Elemente zum Anlegen und Bearbeiten verwendet werden können. Hier sind Titel, Editor, Textauszug und Artikelbild ausgewählt. Sie können frei verändern. Mögliche Angaben: title, editor, author, thumbnail, excerpt, trackbacks, custom-fields, comments, revisions, page-attributes, post-formats
    • Zeile 35: taxonomies
      Ein Array von Taxonomien, die verwendet werden können, zB Kategorien (‚category‘) oder Tags (‚post_tag‘). Es sind auch mehr als deren zwei und zusätzlich Custom Taxonomies möglich, falls Sie solche verwenden.
    • Zeile 36: has_archive
      Ermöglicht das Verwenden von Archivseiten für den Custom Post Type.
    • Zeile 37: can_export
      Legt fest, ob der Custom Post Type exportiert werden kann.
    • Zeile 38: menu_position
      Legt die Position fest, an der das Menüelement im Backend angezeigt wird. Standard: nach Kommentaren
    • Zeile 39: capability_type/capabilities
      Erlaubt es, das Verhalten des Custom Post Types im Bezug auf Benutzerrechte anzugeben. Hier wird der Custom Post Type an die Rechte der Beiträge gekoppelt.
    • Zeile 40: rewrite
      Legt die Regel für Permalinks fest. Die URL würde im vorliegenden Fall https://domain.ch/movies/beitragsname/ heissen.

Grundsätzlich sind alle diese Argumente optional. Es ist aber hilfreich, sie festzulegen oder wenigstens Überlegungen dazu anzustellen. Lassen Sie die Angaben weg, gelten für den Custom Post Type einfach dieselben Angaben wie für die Beiträge.

Die Custom Post Types gehen häufig Hand in Hand mit Custom Taxonomies. Diesen widmen wir uns im Beitrag «Workshop II: Custom Taxonomies erstellen – ganz ohne Plugin».

Werbung

Werbung

 

Kostenlose WordPress- und Divi-Tricks im Abo

Wir schicken Ihnen sporadisch (weniger als 10x jährlich) neue Tricks für Wordpress und das Divi-Theme, aber auch hilfreiche CSS- und HTML-Codes frei Haus.

Füllen Sie zur Anmeldung das folgende Formular aus. Angaben mit * sind Pflichtangaben.






Vielen Dank.

Pin It on Pinterest

Share This