Benutzerdefinierte Beitragstypen erstellen
Veröffentlicht: 2016-08-23WordPress ist schon lange nicht mehr „ nur eine Blogging “-Plattform. Eine der wichtigsten Funktionen, die ihm dabei geholfen haben, sich in ein richtiges Content-Management-System (CMS) zu verwandeln, sind benutzerdefinierte Beitragstypen .
Dies ist der erste Artikel einer 3-teiligen Serie zum Thema Custom Post Types (CPT). Dies sind die Themen, die wir in den nächsten beiden diskutieren werden:
- Benutzerdefinierte Taxonomien
- Anzeigen von benutzerdefinierten Beitragstypen (Vorlagen und Abfragen)
Aber jetzt schauen wir uns die benutzerdefinierten Beitragstypen genauer an und wie man sie einrichtet.
Was ist ein benutzerdefinierter Beitragstyp?
Standardmäßig verwendet WordPress diese Beitragstypen:
- Post
- Buchseite
- Anhang
- Revision
- Menüpunkt
Was ist also ein benutzerdefinierter Beitragstyp? Ein benutzerdefinierter Beitragstyp ist im Grunde ein WordPress-Beitrag mit benutzerdefinierten Parametern (benutzerdefinierte Felder, benutzerdefinierte Kategorie-/Tag-Struktur, …). Die klassischen Beispiele für benutzerdefinierte Beitragstypen sind: Bücher, Rezensionen, Testimonials, Teammitglieder, Portfolios und so weiter. Sie können es jedoch für alles verwenden, was die Art des von Ihnen erstellten Inhalts angibt.
Warum würden Sie eine verwenden?
Sie könnten einfach normale WP-Posts verwenden und Kategorien und Tags verwenden, um die verschiedenen „Post-Typen“ zu trennen. Dies ist jedoch nicht ideal und kann später zu Komplikationen führen. Hier sind einige Gründe, warum Sie vielleicht einen benutzerdefinierten Beitragstyp verwenden möchten:
- Wenn Sie einige Inhalte von anderen verfügbaren Beitragstypen in WordPress trennen möchten
- Sie benötigen einige benutzerdefinierte Felder, die ausschließlich für den Inhalt gelten, den Sie veröffentlichen möchten
- Sie müssen den Inhalt anders anzeigen als andere Beitragstypen (wie Beiträge oder Seiten).
Angenommen, Sie schreiben einen Food-Blog. Normalerweise posten Sie Restaurantkritiken, möchten aber auch Ihre eigenen Rezepte posten. Rezepte wären ein perfekter benutzerdefinierter Beitragstyp, da Sie wahrscheinlich ein anderes Layout als bei einem normalen Beitrag benötigen würden. Vielleicht auch einige benutzerdefinierte Felder, wie zum Beispiel Zutaten. Mit der Einführung eines Rezept -CPT würde der Blog-Bereich nur Ihren normalen Beitrag enthalten, und Ihre Rezepte würden einen eigenen Bereich (eigene Rezept-Archivseite) erhalten. Dies würde es Besuchern erleichtern , die nur Ihre Rezepte ansehen möchten.
In dieser Artikelserie werden wir die Testimonials CPT für unser Shaka-Theme erstellen. Angenommen, ein Benutzer möchte eine Seite haben, auf der er alle Kundenreferenzen anzeigen kann. Er möchte diesem benutzerdefinierten Beitragstyp einige benutzerdefinierte Felder hinzufügen und er möchte auch ein anderes Layout, um diese Testimonials anzuzeigen. Schauen wir uns zuerst an, wie man einen benutzerdefinierten Beitragstyp registriert .
Wie können Sie einen benutzerdefinierten Beitragstyp erstellen?
Es gibt zwei Möglichkeiten , einen neuen benutzerdefinierten Beitragstyp zu erstellen.
Die erste Option ist die Verwendung eines Plugins, das den benutzerdefinierten Beitragstyp für Sie registriert. Diese Methode ist gut für Benutzer, die mit PHP-Code nicht vertraut sind. Sie geben nur die erforderlichen Details ein und das Plugin erledigt den Rest.
Die zweite Methode besteht darin, den benutzerdefinierten Beitragstyp manuell zu registrieren. Das bedeutet, dass Sie etwas Code schreiben müssen, aber keine Panik, es ist ziemlich einfach und ich werde Ihnen auch einen netten Trick zeigen.
Erstellen Sie einen benutzerdefinierten Beitragstyp mit einem Plugin – der einfache Weg
Wenn Sie Ihrer Website schnell und einfach einen benutzerdefinierten Beitragstyp hinzufügen möchten, sollten Sie ein Plugin verwenden, das eine solche Funktionalität bietet. Das wahrscheinlich beliebteste Plugin dafür ist Custom Post Type UI, es ist kostenlos und einfach zu bedienen. Richten wir es ein:
- Installiere und aktiviere das Custom Post Type UI Plugin von deinem wp-admin Dashboard,
- Sobald Sie das Plugin aktivieren, ist der CPT-UI-Admin-Menüpunkt verfügbar. Gehen Sie zu CPT UI -> Beitragstypen hinzufügen/bearbeiten,
- Hier finden Sie viele Einstellungen, mit denen Sie Ihr CPT anpassen können. Wir werden sie in diesem Artikel nicht alle im Detail durchgehen. Neben jeder Einstellungsbezeichnung befindet sich jedoch ein Tooltip-Symbol, das erklärt, was jede Einstellung bewirkt. Lassen Sie uns die Dinge festlegen, die wir für unseren Anwendungsfall benötigen (Testimonial CPT),
- Geben Sie den Slug ein: Testimonials, Plural Label: Testimonials und das Slug Label: Testimonial,
- Sie können auf die Schaltfläche Zusätzliche Beschriftungen bearbeiten klicken, um genauere Beschriftungen festzulegen. Aber wir können dies überspringen und zurückkommen, wenn wir später ein Problem sehen,
- Alle Standardeinstellungen sind für unseren Anwendungsfall in Ordnung, wir fügen lediglich die Unterstützung für benutzerdefinierte Felder hinzu (aktivieren Sie das Kontrollkästchen „Benutzerdefinierte Felder“ im Abschnitt „Unterstützungen“).
- Klicken Sie auf Beitragstyp hinzufügen, um den benutzerdefinierten Beitragstyp zu erstellen.
Sobald wir den benutzerdefinierten Beitragstyp erstellt haben, erscheint ein neuer Menüeintrag Testimonials wp-admin Dashboard. Wir können jetzt neue Testimonials mit allen Feldern erstellen, die bei der Erstellung des benutzerdefinierten Beitragstyps ausgewählt wurden (Titel, Editor, Vorgestelltes Bild und benutzerdefinierte Felder).
Wir könnten auch eine Taxonomie für diesen benutzerdefinierten Beitragstyp festlegen, aber wir werden das im nächsten Artikel behandeln.
Erstellen Sie manuell einen benutzerdefinierten Beitragstyp – Codierung erforderlich
Sie fragen sich vielleicht: Wenn Sie einen benutzerdefinierten Beitragstyp mit einem Plugin erstellen können, warum sollte jemand ihn manuell mit Code erstellen wollen?
Die Möglichkeit, eines mit einem Plugin zu erstellen, ist sicherlich sehr praktisch , aber es gibt Fälle, in denen Sie dies über Code tun möchten. Wenn Sie beispielsweise eine Website für Ihren Kunden entwickeln und nicht möchten, dass der Kunde diese Einstellungen ändern kann, oder wenn Sie kein weiteres Plugin auf seiner Website installieren möchten. Wenn Sie ein Design (oder ein untergeordnetes Design) zur Verwendung auf mehreren Websites erstellen möchten, ist es außerdem einfacher , den benutzerdefinierten Beitragstyp im Code zu registrieren, als die Plugin-Schritte für jede Website zu wiederholen. Es gibt einige Vor- und Nachteile für jede Methode, also müssen Sie entscheiden, was in Ihrem Fall am besten ist.
Der Code zum Erstellen eines benutzerdefinierten Beitragstyps kann direkt in einem Design (in functions.php ) platziert werden. Oder Sie können ein neues Plugin erstellen und den CPT-Code dort einfügen. Dies ist auch eine spaltende Frage in der WordPress-Community. Die eine Seite sagt, dass es im Plugin liegen soll, damit bei einem Theme-Wechsel die Daten des CPT erhalten bleiben (aber die Ausgabe ist ungestylt und sieht im neuen Theme nicht gut aus). Und die andere Seite denkt, dass es besser ist, den CPT-Code direkt in das Thema einzufügen , weil es themenspezifisch ist und auch speziell für dieses Thema gestylt ist.

Ich persönlich denke, dass es immer besser ist, den Stil (Thema) von der Funktionalität (Plugins) zu trennen, und daher ist die Erstellung eines neuen Plugins für die CPT-Registrierung eine bessere Option. Es ist einfacher, dem neuen Design ein Styling hinzuzufügen, damit die CPT-Ausgabe gut aussieht, als die Daten des CPT zu verlieren, weil zu einem neuen Design gewechselt wird.
Registrieren Sie einen benutzerdefinierten Beitragstyp mit Code
Ich habe einen netten Trick versprochen, nicht wahr? Nun, Sie müssen eigentlich keinen Code schreiben, um einen benutzerdefinierten Beitragstyp per Code registrieren zu können. Das mag seltsam klingen, aber es ist wahr. Sie können dieses Tool auf generatewp.com verwenden, um den für die CPT-Registrierung erforderlichen Code zu generieren. Sie müssen lediglich einige Daten eingeben und den Code generieren. Ich habe dies für unseren Testimonials-Anwendungsfall getan und das ist dabei herausgekommen:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
… Ein perfekt gültiger PHP-Code, den Sie in Ihren Projekten verwenden können. Wie bereits erwähnt, können Sie diesen Code in ein neu erstelltes Plugin oder in die Datei functions.php des Themes einfügen. Der Einfachheit halber habe ich mich für Letzteres entschieden. Ich habe diesen Code in die Datei functions.php des Themes eingefügt, und das Testimonials wp-admin-Menü erschien und ich kann jetzt neue Testimonials erstellen (genau wie in der Plugin-Methode oben).
Sie können auch ein anderes Symbol für Ihren benutzerdefinierten Beitragstyp festlegen, das im wp-admin-Menü angezeigt wird. Sie müssen nur diese Zeile in das $args-Array einfügen: 'menu_icon' => 'dashicons-businessman'
. Eine Liste aller möglichen Icons findest du hier: WordPress Dashicons. (Danke an Alexander für diesen Tipp).
Schauen wir uns den Code genauer an:
- Der gesamte CPT-Registrierungsprozess ist in der Funktion
custom_post_type_testimonial()
gekapselt, die mit dieser Codezeile in deninit
-WP-Hook am Ende des Snippets eingehakt ist:add_action( 'init', 'custom_post_type_testimonials' );
. Dieseradd_action
-Aufruf ist der letzte Aufruf, der alles in Gang setzt und WordPress dazu bringt, seine Magie zu entfalten. - Der erste Codeblock innerhalb der Funktion ist ein Datenarray namens
$labels
, das die Übersetzungszeichenfolgen für diesen benutzerdefinierten Beitragstyp enthält. - Der zweite Block ist ein Array von Argumenten, die für die CPT-Registrierung verwendet werden, hier können Sie alle Einstellungen für den CPT definieren. Welche Felder das CPT unterstützen soll, soll es öffentlich sichtbar sein, die Position des wp-admin-Menüs, soll es eine Archivseite haben und so weiter. Um den vollständigen Satz an Optionen zu sehen, besuchen Sie bitte diese WP-Codex-Seite.
- Die letzte Zeile der Funktion ist
register_post_type( 'testimonials', $args );
. Dadurch wird der benutzerdefinierte Beitragstyp „Testimonials“ mit den Einstellungen registriert, die wir oben in den$args
angegeben haben.
Das ist es! Wir haben einen benutzerdefinierten Beitragstyp mit etwas PHP-Code registriert.
Die einzige Verbesserung, die ich im generierten Code ändern würde, wäre die Verwendung von Escaping-Internationalisierungsfunktionen. Anstelle von _x()
und __()
würde ich esc_html_x()
und esc_html__()
verwenden. Es ist immer gut, Ausgabewerte zu maskieren – sogar Übersetzungsstrings – aber das ist ein Thema für einen anderen Blogbeitrag.
Nächster Artikel in der Reihe: So erstellen Sie eine benutzerdefinierte Taxonomie.