Die 3 bekanntesten Post Types sind posts, pages und attachements. Chakteristisch für einen Post Type sind verschiedene Templates oder unterschiedliche Einstellungsmöglichkeiten im Backend.
Nun kann es sein, dass man Post Types mit individuellen Parametern und Ausgabeformen braucht. Denkbar wäre zum Beispiel:
- digitale Visitenkarten
- Produkte
- Termine
- Veranstaltungen
- Immobilien
Beispiel: Visitenkarte
Funktion für neuen Post type erstellen:
function tyt_new_custom_post_type_visitenkarten() {}
Aufruf: add_action( 'init', 'tyt_new_custom_post_type_visitenkarten', 0 );
Beschriftungen für ein neues Menü im Adminbereich erstellen:
$labels = array(
'name' => _x( 'Visitenkarten', 'Post Type General Name', 'wf-visitenkarten' ),
'singular_name' => _x( 'Visitenkarte', 'Post Type Singular Name', 'wf-visitenkarten' ),
'menu_name' => __( 'Visitenkarten', 'wf-Visitenkarten' ),
'name_admin_bar' => __( 'Visitenkarten', 'wf-visitenkarten' ),
'archives' => __( 'Visitenkarten Archive', 'wf-visitenkarten' ),
'all_items' => __( 'Alle Visitenkarten', 'wf-visitenkarten' ),
'add_new_item' => __( 'Neue Visitenkarte', 'wf-visitenkarten' ),
'add_new' => __( 'Neu', 'wf-visitenkarten' ),
'new_item' => __( 'Neue Visitenkarte', 'wf-visitenkarten' ),
'edit_item' => __( 'Visitenkarte bearbeiten', 'wf-visitenkarten' ),
'update_item' => __( 'Visitenkarte aktualisieren', 'wf-visitenkarten' ),
'view_item' => __( 'Visitenkarten anschauen', 'wf-visitenkarten' ),
'view_items' => __( 'Visitenkarten anschauen', 'wf-visitenkarten' ),
'search_items' => __( 'Visitenkarten suchen', 'wf-visitenkarten' ),
);
-> Weitere Labels
Bedienelemente in der Bearbeitungsansicht:
z.B.
$supports = array(
'title',
'editor',
'excerpt',
'author',
'thumbnail',
'custom-fields',
'revisions',
'page-attributes',
'post-formats'
'comments'
);
Permalinks:
$rewrite = array(
'slug' => 'visitenkarten',
'with_front' => true,
'pages' => false,
'feeds' => true,
);
Zusammenfügen:
$args = array(
'label' => __( 'Visitenkarten', 'wf-visitenkarten' ), //Titel Menüpunkt
'description' => __( Visitenkartenmanager', 'wf-visitenkarten' ),
'labels' => $labels, //Beschriftungen s.o.
'supports' => array( 'title', 'editor' ), //Funktionen der Bearbeitungsoberfläche s.o.
'show_in_rest' => true, //Verwndung Gutenberg-Editor
'taxonomies' => array( 'category', 'post_tag' ), //z.B. Schlagwörter, Kategorien und selbst erstellte
'hierarchical' => false, //Nutzung von Elternelementen
'public' => true, //Sichtbarkeit für Besucher und Editoren
'show_in_menu' => true, //Anzeige eines eigenen Menüpunktes
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-home',
'has_archive' => true, //Anzeigemöglichkeit einer Archivseite wie bei den Beiträgen
'capability_type' => 'page', //Rechte vegleichbar mit denen von Seiten
'rewrite' => $rewrite,
);
Post Type registrieren:
register_post_type( 'wf_cpt_visitenkarten', $args );
Alles in die /wp-config/functions.php oder /wp-content/theme/theme-name/functions.php einfügen:
function wf_register_custom_post_type_visitenkarten() {
$labels = array(
'name' => _x( 'Visitenkarten', 'Post Type General Name', 'wf-visitenkarten' ),
'singular_name' => _x( 'Visitenkarte', 'Post Type Singular Name', 'wf-visitenkarten' ),
'menu_name' => __( 'Visitenkarten', 'wf-visitenkarten' ),
'name_admin_bar' => __( 'Visitenkarten', 'wf-visitenkarten' ),
'archives' => __( 'Visitenkarte Archiv', 'wf-visitenkarten' ),
'all_items' => __( 'Alle Visitenkarten', 'wf-visitenkarten' ),
'add_new_item' => __( 'Visitenkarte hinzufügen', 'wf-visitenkarten' ),
'add_new' => __( 'Neu', 'wf-visitenkarten' ),
'new_item' => __( 'Neue Visitenkarte', 'wf-visitenkarten' ),
'edit_item' => __( 'Visitenkarte bearbeiten', 'wf-visitenkarten' ),
'update_item' => __( 'Visitenkarte aktualisieren', 'wf-visitenkarten' ),
'view_item' => __( 'Visitenkarte anschauen', 'wf-visitenkarten' ),
'view_items' => __( 'Visitenkarten anschauen', 'wf-visitenkarten' ),
'search_items' => __( 'Visitenkarten suchen', 'wf-visitenkarten' ),
);
$supports = array(
'title',
'editor',
// 'excerpt',
// 'author',
'thumbnail',
//'trackbacks',
// 'custom-fields',
'revisions',
// 'page-attributes',
// 'post-formats'
// 'comments'
);
$rewrite = array(
'slug' => 'visitenkarten',
'with_front' => true,
'pages' => false,
'feeds' => true,
);
$args = array(
'label' => __( 'Visitenkarte', 'wf-visitenkarten' ),
'description' => __( 'Visitenkartenmanager', 'wf-visitenkarten' ),
'labels' => $labels,
'supports' => array( 'title', 'editor' ),
'show_in_rest' => true,
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-home',
'has_archive' => true,
'capability_type' => 'page',
'rewrite' => $rewrite,
);
register_post_type( 'wf_cpt_visitenkarten', $args );
}
add_action( 'init', 'wf_register_custom_post_type_visitenkarten', 0 );