115 lines
5.7 KiB
PHP
115 lines
5.7 KiB
PHP
<?php
|
||
/**
|
||
* WMW_CPT – Registers Custom Post Types and Taxonomies.
|
||
*/
|
||
defined( 'ABSPATH' ) || exit;
|
||
|
||
class WMW_CPT {
|
||
|
||
public function __construct() {
|
||
add_action( 'init', [ __CLASS__, 'register' ], 0 );
|
||
}
|
||
|
||
public static function register(): void {
|
||
self::register_wiki();
|
||
self::register_article();
|
||
self::register_category();
|
||
self::register_tag();
|
||
}
|
||
|
||
/* ── Wiki Container ─────────────────────────────────────────── */
|
||
|
||
private static function register_wiki(): void {
|
||
register_post_type( 'wmw_wiki', [
|
||
'labels' => [
|
||
'name' => _x( 'Wikis', 'post type general name', 'wp-multi-wiki' ),
|
||
'singular_name' => _x( 'Wiki', 'post type singular name', 'wp-multi-wiki' ),
|
||
'add_new' => __( 'Neues Wiki', 'wp-multi-wiki' ),
|
||
'add_new_item' => __( 'Neues Wiki erstellen', 'wp-multi-wiki' ),
|
||
'edit_item' => __( 'Wiki bearbeiten', 'wp-multi-wiki' ),
|
||
'view_item' => __( 'Wiki ansehen', 'wp-multi-wiki' ),
|
||
'all_items' => __( 'Alle Wikis', 'wp-multi-wiki' ),
|
||
'search_items' => __( 'Wikis suchen', 'wp-multi-wiki' ),
|
||
'not_found' => __( 'Keine Wikis gefunden.', 'wp-multi-wiki' ),
|
||
'not_found_in_trash' => __( 'Keine Wikis im Papierkorb.', 'wp-multi-wiki' ),
|
||
],
|
||
'public' => true,
|
||
'show_ui' => true,
|
||
'show_in_menu' => 'wp-multi-wiki',
|
||
'show_in_rest' => true,
|
||
'has_archive' => 'wikis',
|
||
'rewrite' => [ 'slug' => 'wikis', 'with_front' => false ],
|
||
'supports' => [ 'title', 'editor', 'thumbnail', 'excerpt' ],
|
||
'menu_icon' => 'dashicons-book-alt',
|
||
'capability_type' => 'post',
|
||
] );
|
||
}
|
||
|
||
/* ── Wiki Article ───────────────────────────────────────────── */
|
||
|
||
private static function register_article(): void {
|
||
register_post_type( 'wmw_article', [
|
||
'labels' => [
|
||
'name' => _x( 'Wiki Artikel', 'post type general name', 'wp-multi-wiki' ),
|
||
'singular_name' => _x( 'Wiki Artikel', 'post type singular name', 'wp-multi-wiki' ),
|
||
'add_new' => __( 'Neuer Artikel', 'wp-multi-wiki' ),
|
||
'add_new_item' => __( 'Neuen Artikel erstellen', 'wp-multi-wiki' ),
|
||
'edit_item' => __( 'Artikel bearbeiten', 'wp-multi-wiki' ),
|
||
'view_item' => __( 'Artikel ansehen', 'wp-multi-wiki' ),
|
||
'all_items' => __( 'Alle Artikel', 'wp-multi-wiki' ),
|
||
'search_items' => __( 'Artikel suchen', 'wp-multi-wiki' ),
|
||
'not_found' => __( 'Keine Artikel gefunden.', 'wp-multi-wiki' ),
|
||
'parent_item_colon' => __( 'Übergeordneter Artikel:', 'wp-multi-wiki' ),
|
||
],
|
||
'public' => true,
|
||
'show_ui' => true,
|
||
'show_in_menu' => 'wp-multi-wiki',
|
||
'show_in_rest' => true,
|
||
'has_archive' => false,
|
||
'hierarchical' => true, // Enables Chapter → Subchapter structure
|
||
'rewrite' => [ 'slug' => 'wiki-artikel', 'with_front' => false ],
|
||
'supports' => [ 'title', 'editor', 'thumbnail', 'excerpt', 'page-attributes', 'revisions', 'custom-fields' ],
|
||
'capability_type' => 'post',
|
||
] );
|
||
}
|
||
|
||
/* ── Taxonomies ─────────────────────────────────────────────── */
|
||
|
||
private static function register_category(): void {
|
||
register_taxonomy( 'wmw_category', 'wmw_article', [
|
||
'labels' => [
|
||
'name' => _x( 'Kategorien', 'taxonomy general name', 'wp-multi-wiki' ),
|
||
'singular_name' => _x( 'Kategorie', 'taxonomy singular name', 'wp-multi-wiki' ),
|
||
'add_new_item' => __( 'Neue Kategorie erstellen', 'wp-multi-wiki' ),
|
||
'edit_item' => __( 'Kategorie bearbeiten', 'wp-multi-wiki' ),
|
||
'all_items' => __( 'Alle Kategorien', 'wp-multi-wiki' ),
|
||
'parent_item' => __( 'Übergeordnete Kategorie', 'wp-multi-wiki' ),
|
||
'parent_item_colon' => __( 'Übergeordnete Kategorie:', 'wp-multi-wiki' ),
|
||
],
|
||
'hierarchical' => true,
|
||
'public' => true,
|
||
'show_ui' => true,
|
||
'show_admin_column' => true,
|
||
'show_in_rest' => true,
|
||
'rewrite' => [ 'slug' => 'wiki-kategorie', 'with_front' => false ],
|
||
] );
|
||
}
|
||
|
||
private static function register_tag(): void {
|
||
register_taxonomy( 'wmw_tag', 'wmw_article', [
|
||
'labels' => [
|
||
'name' => _x( 'Tags', 'taxonomy general name', 'wp-multi-wiki' ),
|
||
'singular_name' => _x( 'Tag', 'taxonomy singular name', 'wp-multi-wiki' ),
|
||
'add_new_item' => __( 'Neuen Tag erstellen', 'wp-multi-wiki' ),
|
||
'all_items' => __( 'Alle Tags', 'wp-multi-wiki' ),
|
||
],
|
||
'hierarchical' => false,
|
||
'public' => true,
|
||
'show_ui' => true,
|
||
'show_admin_column' => true,
|
||
'show_in_rest' => true,
|
||
'rewrite' => [ 'slug' => 'wiki-tag', 'with_front' => false ],
|
||
] );
|
||
}
|
||
}
|