Erlernen Sie die Anpassung von Artikeltypen in WordPress: Ein vollständiger praktischer Leitfaden von der Erstellung bis zur Veröffentlichung.

3-Minuten-Lesung
2026-03-17
2026-06-04
2,423
Ich bekomme eine Provision, wenn du über die untenstehenden Links einkaufst – ohne zusätzliche Kosten für dich.

Was sind WordPress Custom Post Types

WordPress bietet standardmäßig zwei Inhaltstypen, “Post” und “Page”, aber das ist oft nicht genug, wenn man komplexe Websites erstellt. Benutzerdefinierte Beitragstypen (abgekürzt als CPT) ist eine WordPress-Kernfunktion, die es Entwicklern ermöglicht, neue Inhaltstypen mit eigenen Datenstrukturen und Backend-Verwaltungsschnittstellen zu erstellen. Sie können sich das als “Inhaltsvorlage” für die Verwaltung bestimmter Arten von Informationen vorstellen.

Eine Website für Filmkritiken könnte beispielsweise den Standardtyp “Artikel” verwenden, um Nachrichten zu verfassen, und einen benutzerdefinierten Artikeltyp namens “Film” erstellen, um Filmeinträge zu verwalten, von denen jeder exklusive Felder wie Regisseur, Sterne, Bewertung usw. enthalten könnte. Eine E-Commerce-Website kann einen “Produkt”-Typ erstellen, und eine Schul-Website kann einen “Kurs”- oder “Lehrer”-Typ erstellen. Durch die Verwendung von CPTAußerdem bietet es eine solide Grundlage für die spätere Anpassung der Vorlagen und die Erweiterung der Funktionalität, da die verschiedenen Arten von Inhalten klar voneinander getrennt sind und die Datenverwaltung effizienter ist.

Wie erstellt man eine benutzerdefinierte Artikelart?

Es gibt zwei Hauptmethoden, um benutzerdefinierte Beitragstypen in WordPress zu erstellen: mit der Code-Registrierung und mit Plugins. Für Entwickler ist die Beherrschung der Code-Registrierung von entscheidender Bedeutung, da sie das höchste Maß an Flexibilität und Kontrolle bietet und die Versionierung innerhalb eines Themes oder benutzerdefinierten Plugins erleichtert.

Empfohlene Lektüre Vollständige Beherrschung der benutzerdefinierten Artikeltypen in WordPress: Von der Erstellung bis hin zu fortgeschrittenen Anwendungspraktiken

Registrierung von benutzerdefinierten Artikeltypen über Code

Die übliche und empfohlene Vorgehensweise ist, dass man in der Betreffzeile functions.php Datei oder in einem eigenständigen Feature-Plugin unter Verwendung der register_post_type Funktion registriert ist. Diese Funktion nimmt zwei Argumente entgegen: den Bezeichner des benutzerdefinierten Artikeltyps (Slug) und ein Array, das alle Argumente enthält.

UltaHost – WordPress-Hosting-Anbieter
30-tägige Geld-zurück-Garantie, unbegrenztes Bandbreiten- und Datenbankvolumen, kostenlose DDoS-Schutzmaßnahmen sowie ein Rabatt von 501 auf 4 Terabyte bei einer Kaufdauer von 3 Jahren.

Nachfolgend finden Sie ein einfaches Beispiel für die Erstellung eines benutzerdefinierten Beitragstyps namens “Film”:

function create_movie_post_type() {
    $labels = array(
        'name'               => '电影',
        'singular_name'      => '电影',
        'menu_name'          => '电影管理',
        'add_new_item'       => '添加新电影',
        'edit_item'          => '编辑电影',
        'view_item'          => '查看电影',
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'movie' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-video-alt',
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
    );
    register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' );

Dieser Code führt über add_action Hooks werden ausgeführt, wenn WordPress initialisiert wird create_movie_post_type Funktion. Die Funktion definiert intern das Display-Label $labels und Kernparameter $args.. Die wichtigsten Parameter sind:public Steuert, ob es im Hintergrund und im Vordergrund angezeigt wird oder nicht;rewrite Definieren Sie URL-Rewrite-Regeln, bei denen der Link für den Zugriff auf einen einzelnen Film wie folgt lautet yoursite.com/movie/some-moviehas_archive Stellen Sie fest, ob es archivierte Seiten gibt (z. B. yoursite.com/movie/);supports Das Array definiert die Funktionen, die von diesem Inhaltstyp unterstützt werden, wie z. B. Kopfzeilen, Editoren, Featured Images und so weiter.

Erstellen von benutzerdefinierten Beitragstypen mit Plugins

Für Benutzer, die mit Code nicht vertraut sind, sind Plugins ideal, um schnell loszulegen.Custom Post Type UI und Toolset Types sind zwei sehr beliebte Plugins. Sie bieten eine intuitive Benutzeroberfläche, mit der Sie Ihre Beitragstypen durch Ankreuzen von Kästchen und Ausfüllen von Formularen definieren können. CPT verschiedener Attribute wie Kennzeichnung, Werbung, unterstützte Funktionen usw.

Die Plugin-Methode ist einfach und schnell zu erstellen, erfordert aber in der Regel zusätzliche Datenbankabfragen und ihre Konfiguration hängt vom Plugin selbst ab. Bei der Migration einer Website auf einen anderen Host oder bei größeren Aktualisierungen können zusätzliche Schritte erforderlich sein, um sicherzustellen, dass die Einstellungen für benutzerdefinierte Beitragstypen beibehalten werden. Daher ist der Ansatz der Code-Registrierung in der Regel die bevorzugte Option für Produktionsumgebungen oder Projekte, die eine langfristige Wartung erfordern.

Empfohlene Lektüre Leitfaden für WordPress-Theme-Entwickler: Erstellung leistungsstarker benutzerdefinierter Themes von Grund auf

Hinzufügen von benutzerdefinierten Feldern zu benutzerdefinierten Beitragstypen

Der benutzerdefinierte Beitragstyp selbst bietet nur ein strukturelles Gerüst. Um wirklich einzigartige Informationen zu speichern (wie z. B. das “Veröffentlichungsdatum” oder den “Regisseur” eines Films), benötigen Sie benutzerdefinierte Felder oder die leistungsfähigeren benutzerdefinierten Meta-Boxen. (WordPress verfügt über ein natives “Custom Fields”-Panel, aber es ist eine einfache Schnittstelle mit begrenzter Funktionalität, die für Inhaltsredakteure nicht geeignet ist.

Verwendung des Advanced Custom Fields Plugins

Das Advanced Custom Fields (ACC) Plugin ist der Industriestandard für den Umgang mit benutzerdefinierten Feldern. Es ermöglicht Ihnen, benutzerdefinierte Felder über eine grafische Schnittstelle für verschiedene Artikeltypen zu erstellen (einschließlich Ihrer CPT) Erstellen Sie verschiedene Arten von Feldgruppen, z. B. Text, Bilder, Kontrollkästchen, assoziative Beziehungen usw.

Zum Beispiel für “Film” CPT Erstellen Sie eine Feldgruppe mit “Regisseur”, “Hauptdarsteller” und “Erscheinungsjahr”. Nachdem Sie das ACF-Plugin installiert und aktiviert haben, gehen Sie auf seine Einstellungsseite, erstellen Sie eine neue Feldgruppe und setzen Sie ihre Standortregel auf “Artikeltyp ist gleich Film”. Dann können Sie nacheinander “Regisseur” (Textfeld), “Hauptdarsteller” (Textfeld) und “Erscheinungsjahr” (numerisches Feld) hinzufügen. Nach dem Speichern sehen Sie diese intuitiven Eingabefelder bei der Bearbeitung des Filminhalts im Hintergrund.

hosting.com Shared Hosting
Hohe Leistung mit AMD EPYC-CPUs, NVMe-SSD-Speicher und LiteSpeed, fachkundiger Inhouse-Support rund um die Uhr, erweiterte Sicherheitsmaßnahmen einschließlich SSL, Brute-Force-, Malware- und DDoS-Schutz, Einsparungen von bis zu 73%

Benutzerdefinierte Metarahmen durch Code erstellen

Wenn Sie die vollständige Kontrolle über den Code haben möchten, können Sie Ihre CPT Entwicklung von benutzerdefinierten Metaframes. Dazu werden die WordPress-Metaframe-API und die Speicherfunktionen verwendet. Obwohl der Code umfangreich ist, bietet er völlige Freiheit bei der Anpassung.

Nachfolgend ein vereinfachtes Beispiel, das zeigt, wie ein Feld “Regisseur” zu “Film” hinzugefügt wird:

// 1. 添加元框
function add_movie_director_meta_box() {
    add_meta_box(
        'movie_director_meta_box', // 元框ID
        '导演信息', // 元框标题
        'render_movie_director_meta_box', // 回调函数,用于输出HTML
        'movie', // 目标文章类型
        'side', // 位置
        'default' // 优先级
    );
}
add_action( 'add_meta_boxes', 'add_movie_director_meta_box' );

// 2. 渲染元框内容
function render_movie_director_meta_box( $post ) {
    // 获取已保存的值
    $director = get_post_meta( $post->ID, '_movie_director', true );
    // 添加安全字段
    wp_nonce_field( 'movie_director_nonce_action', 'movie_director_nonce' );
    // 输出HTML
    echo '<label for="movie_director">导演姓名:</label>';
    echo '<input type="text" id="movie_director" name="movie_director" value="' . esc_attr( $director ) . '" style="width:100%;" />';
}

// 3. 保存元框数据
function save_movie_director_meta_data( $post_id ) {
    // 检查nonce、权限、自动保存等
    if ( ! isset( $_POST['movie_director_nonce'] ) || ! wp_verify_nonce( $_POST['movie_director_nonce'], 'movie_director_nonce_action' ) ) {
        return;
    }
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 保存数据
    if ( isset( $_POST['movie_director'] ) ) {
        update_post_meta( $post_id, '_movie_director', sanitize_text_field( $_POST['movie_director'] ) );
    }
}
add_action( 'save_post', 'save_movie_director_meta_data' );

Dieser Code erstellt eine Meta-Box in der Seitenleiste, die ein Feld für den Namen des Direktors enthält. Beachten Sie, dass die Daten unter Verwendung des Standard-WordPress-Sicherheitsprüfverfahrens gespeichert werden, das Folgendes umfasst nonce Validierung, Berechtigungsprüfung und Verhinderung doppelter Verarbeitung im Falle der automatischen Speicherung. Gespeicherte Daten werden durch den update_post_meta Funktionen werden in der Datei wp_postmeta In der Tabelle.

Empfohlene Lektüre WooCommerce-Plugin-Anleitung: Eine umfassende Leitfaden von der Installation und Konfiguration bis zum Betrieb Ihres Online-Shops

Erstellen von Vorlagendateien für benutzerdefinierte Artikeltypen

erstellt CPT WordPress folgt einer Vorlagenhierarchie und sucht automatisch nach bestimmten Vorlagendateien, um Ihre Inhalte anzuzeigen.

Vorlage für einen einzelnen Artikeltyp

Wenn ein Nutzer auf einen einzelnen Filminhalt zugreift (z. B. yoursite.com/movie/inception), sucht WordPress in der folgenden Reihenfolge nach Vorlagendateien:
1. single-movie.php (sehr spezifisch)
2. single.php
3. singular.php
4. index.php

InterServer Shared Hosting
Shared Hosting $2.50 USD pro Monat, erster Monat $0.1 USD Promo-Code tryinterserver, 461 Cloud-Apps Skripte, ein Klick installieren.

Daher ist es am besten, wenn Sie in Ihrem Theme-Ordner eine Datei namens single-movie.php Datei. In dieser Datei können Sie die Darstellung des Films vollständig anpassen, indem Sie die zuvor erstellten benutzerdefinierten Felder aufrufen.

<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
    <header class="entry-header">
        <h1 class="entry-title"></h1>
        <div class="entry-meta">
            <span>Regisseur:</span>
        </div>
    </header>
    <div class="entry-content">
        
        <!-- 显示其他自定义字段,如主演、上映年份 -->
        <p><strong>In den Hauptrollen:</strong><?php the_field( 'lead_actor' ); ?></p>
        <p><strong>Jahr der Veröffentlichung:</strong><?php the_field( 'release_year' ); ?></p>
    </div>
</article>
<?php get_footer(); ?>

Wenn Sie das ACF-Plugin verwenden, können Sie das mitgelieferte the_field() Funktion, um die Feldwerte bequem auszugeben. Wenn Sie ein Feld verwenden, das mit benutzerdefiniertem Code gespeichert wurde, verwenden Sie die Funktion get_post_meta() Funktion.

Archivierte Seitenvorlagen

Wenn ein Nutzer eine Seite mit einer Filmliste besucht (z. B. yoursite.com/movie/), wenn WordPress danach sucht:
1. archive-movie.php
2. archive.php
3. index.php

Erstellen archive-movie.php Datei, in der Sie eine WordPress-Schleife verwenden können, um alle Filme aufzulisten und die Abfrage anzupassen oder eine Paginierung zu verwenden.

<h1>Filmbibliothek</h1>

    <article>
        <h2><a href="/de/</?php the_permalink(); ?>"></a></h2>
        <?php the_post_thumbnail( 'medium' ); ?>
        <p>Regisseur:</p>
        
    </article>
<?php endwhile; the_posts_navigation(); else : ?>
    <p>Zur Zeit kein Film.</p>

Zusammenfassungen

Die Beherrschung der benutzerdefinierten WordPress-Post-Typen ist ein wichtiger Schritt, um vom einfachen Blog-Format wegzukommen und eine moderne, funktionsreiche und gut strukturierte Website aufzubauen. Von der Verwendung register_post_type Funktionen für die Code-Registrierung, das Hinzufügen von speziellen Feldern über ACF-Plug-ins oder benutzerdefinierte Metakästen bis hin zur Erstellung eigener Vorlagen nach Vorlagenebene single-{cpt}.php und archive-{cpt}.php Vorlagedatei ist der gesamte Prozess eine vollständige CPT Arbeitsablauf bei der Entwicklung.

In der Praxis haben wir einen Inhaltstyp “Film” mit einem eigenen Backend-Menü, exklusiven Datenfeldern und einer angepassten Frontend-Präsentation erstellt. Diese Methodik kann nahtlos auf jede Inhaltsanforderung wie “Produkt”, “Portfolio”, “Veranstaltung” usw. übertragen werden. Wenn Sie dieses Wissen verstehen und anwenden, werden Sie als WordPress-Entwickler in der Lage sein, wirklich individuelle digitale Erlebnisse für Ihre Nutzer zu schaffen.

FAQ Häufig gestellte Fragen

Was ist der Unterschied zwischen einem benutzerdefinierten Beitragstyp und einer benutzerdefinierten Taxonomie?

Benutzerdefinierte Artikeltypen werden verwendet, um eine neue Inhaltseinheit zu definieren, z. B. “Film”, “Produkt”. Benutzerdefinierte Taxonomien (z. B. Tags, Erweiterungen von Taxonomien) werden verwendet, um Inhalte zu klassifizieren und zu organisieren. Ein benutzerdefinierter Artikeltyp kann mit mehreren benutzerdefinierten Taxonomien verknüpft werden. Zum Beispiel der Artikeltyp “Filme” CPT Zwei benutzerdefinierte Taxonomien können zugeordnet werden: “Genre” (Action, Komödie) und “Region” (Chinesisch, Hollywood).

Sollte ich CPT in der functions.php des Themes oder in einem separaten Plugin registrieren?

Dies hängt von der Komplexität und den Portabilitätsanforderungen des Projekts ab. Bei Themen, die eng an ein bestimmtes Thema gebunden sind, können nicht wiederverwendbare CPTdie in das Thema des Dokuments eingefügt werden können functions.php ein. Am besten ist es jedoch, ein separates funktionales Plugin zu erstellen, das die Registrierungscodes für alle benutzerdefinierten Beitragstypen und Taxonomien enthält. Auf diese Weise bleiben diese Inhaltstypen und ihre Daten auch bei einem Wechsel des Themes erhalten, und die “Funktionalität” der Website ist besser von ihrem “Look and Feel” getrennt.

Wie kann ich die feste Linkstruktur für vorhandene benutzerdefinierte Artikeltypen ändern?

Sie können sich anmelden unter CPT Arbeitsstunden durch rewrite Parametereinstellungen, die auch nach der Registrierung mit der Funktion register_post_type_args Der Filter wird geändert. Nachdem die Änderungen vorgenommen wurden, müssen die Rewrite-Regeln aktualisiert werden, indem Sie im WordPress-Backend die Seite Einstellungen -> Feste Links aufrufen und einfach einmal auf “Änderungen speichern” klicken. Andernfalls wird die neue Linkstruktur möglicherweise nicht wirksam.

Warum kann ich den benutzerdefinierten Beitragstyp, den ich erstellt habe, nicht im Frontend sehen?

Dies wird in der Regel durch nicht korrekt eingestellte Registrierungsparameter verursacht. Bitte überprüfen Sie zunächst die Registrierungsfunktion $args Array 'public' und 'publicly_queryable' Sind die Parameter alle auf trueZweitens: Stellen Sie sicher, dass… 'show_ui' und 'show_in_nav_menus' auch für true. Prüfen Sie schließlich die Vorlagendatei (single-{cpt}.php oder archive-{cpt}.php) ist korrekt erstellt und befindet sich im Stammverzeichnis des aktiven Themas.