Files
WP-Multi-Wiki/includes/class-wmw-cpt.php
2026-03-18 21:56:45 +01:00

115 lines
5.7 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 ],
] );
}
}