Benutzerdefinierte Post-Typen sind eines der Schlüsselelemente, die Sie ergreifen sollten, wenn Sie flexible, professionelle WordPress-Websites erstellen möchten.
Mit benutzerdefinierten Post-Typen können Sie Ihren eigenen Datentyp hinzufügen. das kann ein Artikel, ein Lied, ein Film oder Tausende anderer Dinge sein. Mithilfe benutzerdefinierter Post-Typen können Sie Ihre Daten gemäß Ihren individuellen Anforderungen kategorisieren. Dadurch können Sie besser steuern, wie sich Ihre Site verhält.
In diesem Artikel werde ich Sie durch die Erstellung eines benutzerdefinierten Filmposttyps für eine Filmdatenbank führen.
Um eine Film-Website zu erstellen, müssen wir eine Datenbank einrichten. Dies ohne benutzerdefinierte Post-Typen zu tun, wäre extrem schwierig und würde möglicherweise mit unserer bestehenden WordPress-Installation kollidieren. Unser benutzerdefinierter Post-Typ wird jedoch ein eigenes Admin-Menü und eine eigene Bearbeitungsseite haben. Wenn wir möchten, können wir der Seite sogar benutzerdefinierte Taxonomien mit den Namen und Eigenschaften hinzufügen, die zu dem Projekt passen.
Benutzerdefinierte Post-Typen machen WordPress von einer Blogging-Plattform zu einem vollwertigen CMS. Sie geben uns die Freiheit, unsere Film-Website ohne hässliche Hacks einzurichten.
In diesem Artikel lege ich den gesamten Code dar, der zum Erstellen eines benutzerdefinierten Posttyps erforderlich ist, und dann gehen wir Zeile für Zeile durch, damit Sie lernen können, was jeder Teil tut, und ihn an Ihre Bedürfnisse anpassen.
Hier ist der vollständige Code, der der Datei functions.php hinzugefügt wird:
add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}
Wie Sie sehen können, wird ein großer Teil des Codes für die Erstellung eines benutzerdefinierten Post-Typs verwendet, aber wenn Sie es verstehen, können Sie diesen Code abrufen und an Ihre Projekte anpassen. In der ersten Zeile hängen wir die Funktion mit unserem benutzerdefinierten Post-Typ an die init und das bedeutet, dass unsere Funktion ausgelöst wird, wenn WordPress dies tut, so dass wir es immer in unserem Dashboard haben werden:
add_action( 'init', 'register_movie' );
In der nächsten Zeile deklarieren wir zunächst den Namen unserer Funktion und eine Variable mit allen Labels, die unserem Filmposttyp zugeordnet werden, damit alles angepasst werden kann.
Das erste, was wir in den Labels deklarieren, ist der Name unseres benutzerdefinierten Post-Typs im Plural und Singular:
'name' => 'Movies','singular_name' => 'Movie',
In den nächsten zwei Zeilen müssen wir unseren Neuen Text hinzufügen angeben (wenn wir ihn ändern wollen) und dann Neuen Film hinzufügen, damit wir beim Hinzufügen eines neuen Films eine benutzerdefinierte Erfahrung haben, anstatt einen Film hinzuzufügen und einen Überschrift "Add New Post".
'add_new' => 'Add New','add_new_item' => 'Add New Movie',
Nach den Beschriftungen zum Erstellen eines neuen Films müssen wir die Beschriftungen für die Bearbeitung festlegen, den neuen Elementtext (standardmäßig Neuer Eintrag / Neue Seite) und den Ansichts-Post-Text:
'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',
Jetzt in den Etiketten gehen wir zu den Suchfunktionen in der WordPress-Admin und unsere Etiketten dafür. Wir müssen Labels festlegen, wenn wir Filme suchen, wenn keine Ergebnisse gefunden werden und auch keine Ergebnisse im Papierkorb gefunden werden:
'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',
Das letzte Etikett spricht für sich selbst, hier müssen wir den Namen angeben, den der benutzerdefinierte Beitragstyp in der Menüoberfläche haben soll, in diesem Fall bleiben wir bei "Movies":
'menu_name' => 'Movies',);
Jetzt müssen wir uns zu unseren Argumenten bewegen, dafür habe ich eine andere Variable erstellt, die alle Argumente enthält, ich nannte sie Argumente .
Das erste Argument, nach dem es fragt, sind die Labels und alles, was wir tun müssen, ist auf die Label-Variable zu zeigen, die wir gerade untersucht haben:
$args = array('labels' => $labels,
In der nächsten Zeile müssen wir festlegen, ob unser Post-Typ hierarchisch wie Seiten sein soll oder nicht (wie Posts). In meinem Fall möchte ich nicht, dass Filme hierarchisch sind, also habe ich sie auf falsch gesetzt. Die nächste Zeile ist nur eine optionale Beschreibung des Post-Typs.
'hierarchical' => false,'description' => 'Here you will add all the movies for the database',
Die nächste Zeile ist wichtig. Hier müssen wir angeben, was unser benutzerdefinierter Post-Typ unterstützt und welche Felder er haben wird. Die Optionen für dieses Feld sind:
In meinem Fall und für meinen Beitragtyp möchte ich nur Titel, den WYSIWYG- Editor, ein Thumbnail und Kommentare unterstützen und dazu muss ich ein Array in dieser Zeile hinzufügen, so:
'supports' => array( 'title', 'editor', 'thumbnail','comments' ),
In der nächsten Zeile müssen wir angeben, welche Taxonomien verwendet werden, und da wir benutzerdefinierte Taxonomien erstellen werden, werden diese in dieser Zeile hinzugefügt:
'taxonomies' => array( 'genre', 'actors', 'year' ),
Die nächsten drei Zeilen haben mit der Sichtbarkeit des Post-Typs im Administrationsbereich zu tun, und alles, was ich tue, setzt alles auf true:
'public' => true,'show_ui' => true,'show_in_menu' => true,
Als nächstes gehen wir zur Position des Menüs, in dem der Post-Typ erscheinen soll. Hier haben wir auch viele Optionen zur Auswahl:
In meinem Fall wollte ich Filme direkt nach den Posts erscheinen lassen, also setze ich die Menüposition auf 5, so:
'menu_position' => 5,
In der nächsten Zeile kümmern wir uns um das Icon, wir können unser eigenes Icon setzen oder es leer lassen und wir werden stattdessen das Posts Icon bekommen, die Zeile dahinter kümmert sich darum, was dieser Post Type zur Auswahl in unseren Menüs erscheinen soll .
'menu_icon' => //the image link here,'show_in_nav_menus' => true,
In den nächsten 3 Zeilen fügen wir die Fähigkeiten des Post-Typs hinzu; wir legen zuerst fest, ob der Post-Typ am Frontend abgefragt werden soll, dann entscheiden wir, ob die Ergebnisse vom Post-Typ aus der Suche ausgeschlossen werden sollen und wir entscheiden uns schließlich, ob wir ein Archiv für den Film-Post-Typ haben wollen:
'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,
In der nächsten Zeile setzen wir die Abfragevariable für unseren Post-Typ und dies wird definieren, wie die URL aussehen wird. Für diese Option haben wir drei mögliche Parameter: Wir können sie auf true setzen und dann können wir den Film mit /? Movie erreichen = name_of_movie; wir können es auf einen String setzen, so dass der Film in der URL durch alles ersetzt wird, was wir wollen, wie zum Beispiel "show", und wir müssten /? show = name_of_movie verwenden, um denselben Film zu erreichen; Die letzte Option besteht darin, sie auf " false" zu setzen. Auf diese Weise ist es unmöglich, einen Film mithilfe von query_var zu erreichen . In meinem Fall, und mit der letztgenannten Option, setze ich meine Abfrage var auf true, so dass wir es mit der query_var des Films erreichen können:
'query_var' => true,
In der nächsten Zeile entscheiden wir, ob die Filme exportierbar sein sollen, und dann wählen wir den Slug für diesen Posttyp aus. In meinem Fall blieb ich bei "true", um "Film" als Slug zu haben, aber man kann einen beliebigen String wählen Slug und Sie haben tatsächlich viele Möglichkeiten, dieser Parameter ist ein umfangreicher.
'can_export' => true,'rewrite' => true,
Die letzte Zeile unserer Argumente ist, wo wir den Fähigkeits-Typ unseres Posts setzen und da ich möchte, dass er die gleichen wie normale Posts hat, habe ich ihm einfach den Wert von post gegeben, so:
'capability_type' => 'post');
Unsere Labels und Argumente sind fertig, wir müssen nur unseren Post-Typ registrieren und die Funktion register_post_type benötigt zwei Parameter, der erste ist der Name unseres benutzerdefinierten Post-Typs (dieser hat maximal 20 Buchstaben und keine Großbuchstaben) oder Leerzeichen) und der zweite ist die Argumente für den Post-Typ und in diesem werden wir nur unsere Argumente Variable:
register_post_type( 'movie', $args );}
Unser Post-Typ ist erstellt und voll funktionsfähig und alles, was Sie brauchen, um es in Ihren Seiten erscheinen zu lassen, ist etwas wp_query magic.
Ich hoffe, Sie können sehen, warum so viele Leute benutzerdefinierte Post-Typen in WordPress verwenden.
Dieser Artikel soll Ihnen den Prozess der Erstellung eines benutzerdefinierten Post-Typs näherbringen und Ihnen einen Ausgangspunkt für die Erstellung Ihrer eigenen erstaunlichen benutzerdefinierten Post-Typen geben.
Ausgewähltes Bild / Vorschaubild, individuelles Bild von ATOMIC Hot Links, über Flickr.