Direktor:
Genre: ID, 'movie_reviews_movie_genre', ");?>
Bewertung: '; else echo '
. ')
Bevor Sie in dieses Tutorial eintauchen, machen Sie sich bitte mit meinem ersten Tutorial zu Custom Post Types durch, in dem ich einige wichtige Aspekte von CPTs (Custom Post Types) erläutert habe. In diesem Tutorial werden wir mehr über dieses wunderbare Feature in WordPress erfahren.
In diesem Lernprogramm erfahren Sie, wie Sie benutzerdefinierte Taxonomien, Verwaltungsspalten, Taxonomie-Filter und eine Archivseite für Ihr CPT erstellen. Also fangen wir an.
Taxonomien sind eine großartige Möglichkeit, Dinge zusammenzufassen und uns bei der Suche nach Beiträgen zu einer bestimmten Gruppe zu helfen. In WordPress verwenden wir im Allgemeinen Kategorien und Tags als Taxonomien. In den folgenden Schritten wird erläutert, wie Sie benutzerdefinierte Taxonomien für Ihr CPT erstellen.
Öffnen Sie in unserem Fall Ihre Plugin-Datei Movie-Reviews.php Fügen Sie den folgenden Code hinzu, um die benutzerdefinierte Funktion zu registrieren.
add_action ('init', 'create_my_taxonomies', 0);
Funktion create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews'), array ('labels' => array ('name' => 'Movie Genre'), 'add_new_item' => 'Neuen Movie Genre hinzufügen', 'new_item_name' = > "New Movie Type Genre"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchisch' => true));
Hier die register_taxonomy
function erledigt die harte Arbeit beim Erstellen einer benutzerdefinierten Taxonomie (in unserem Fall einer Kategorie) mit dem Namen 'movie_reviews_movie_genre
'für den benutzerdefinierten Beitragstyp'movie_reviews
'. Die Bezeichnungen definieren die verschiedenen Zeichenfolgen, die im Admin-Abschnitt der Taxonomie verwendet werden.
'show_ui' => true
wird verwendet, um den Taxonomie-Editor im Dashboard sichtbar zu machen.'show_tagcloud' => false
Dekodieren Sie, ob die Tag-Cloud sichtbar sein soll. In unserem Fall ist es deaktiviert.'hierarchisch' => wahr
dekodiert das Format der benutzerdefinierten Taxonomie.Hinweis: 'hierarchisch' => falsch
wandelt die Kategorien in Tags um.
Nach dem Speichern der Movie-Reviews.php Datei, öffnen Sie Ihre benutzerdefinierte Vorlagendatei, in unserem Fall single-movie_reviews.php und fügen Sie folgendes hinzu hervorgehoben Code, um die Kategorien in unseren Beiträgen sichtbar zu machen.
'movie_reviews',); $ loop = neue WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>> Titel:
Direktor:
Genre: ID, 'movie_reviews_movie_genre', ");?>
Bewertung: '; else echo ''; ?>
Hier haben wir eine benutzerdefinierte Taxonomie 'Movie Genre' in unseren Filmbewertungen CPT hinzugefügt. Jetzt können wir neue Kategorien aus dem Admin-Panel hinzufügen und jede dieser Kategorien unserem CPT zuordnen.
In der CPT-Auflistungsseite von WordPress sind standardmäßig zwei Spalten enthalten - Datum und Kommentare -, durch die wir diese CPT-Elemente sortieren können. Um zusätzliche Spalten und Sortierungen hinzuzufügen, befolgen Sie bitte die unten angegebenen Schritte.
Öffnen Sie die Plugin-Datei Movie-Reviews.php Fügen Sie die folgende Codezeile hinzu, um eine Funktion zu registrieren, die aufgerufen werden soll, wenn die Auflistungsseite für Filmberichte vorbereitet wird.
add_filter ('manage_edit-movie_reviews_columns', 'meine_columns'));
Hier haben wir den Variablenfilter verwendet manage_edit- (Custom_Post_Type) _Spalten
, die die Spaltenliste des CPT als Argument an die Funktion übergibt.
function my_columns ($ Spalten) $ Spalten ['movie_reviews_director'] = 'Director'; $ Spalten ['movie_reviews_rating'] = 'Bewertung'; nicht gesetzt ($ column ['comments']); $ spalten zurückgeben;
Hier haben wir zwei Spalten hinzugefügt: Direktor und Bewertung im Admin-Panel des CPT und löschte auch die Spalte Kommentare aus der Liste.
Registrieren Sie eine Funktion, um die Spalten aufzufüllen.
add_action ('manage_posts_custom_column', 'populate_columns');
Funktion populate_columns ($ column) if ('movie_reviews_director' == $ column) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director; elseif ('movie_reviews_rating' == $ column) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. ' Sterne';
Da hier die Funktion ausgeführt wird, wenn eine der CPT-Spalten gerendert wird, prüft sie, ob die aktuell angeforderten Spalten vorhanden sind, bevor sie wiedergegeben werden. Wir haben die verwendet get_the_ID ()
Funktion, um den Index der aktuellen Zeile abzurufen und dann wiederum die get_post_meta
um die Daten in der Spalte abzurufen.
Lassen Sie uns nun eine Funktion registrieren, die aufgerufen werden soll, wenn WordPress sortierbare Spalten in CPT identifiziert.
add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me'));
function sort_me ($ Spalten) $ Spalten ['movie_reviews_director'] = 'movie_reviews_director'; $ Spalten ['movie_reviews_rating'] = 'movie_reviews_rating'; $ spalten zurückgeben;
Diese Funktion identifiziert zwei Spalten, um sie sortierbar zu machen, und gibt dann das Array zurück. Aber unsere Arbeit ist noch nicht beendet.
add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); function column_orderby ($ vars) if (! is_admin ()) gibt $ vars zurück; if (isset ($ vars ['orderby']) && 'movie_reviews_director' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_director', 'orderby' = > 'meta_value')); elseif (isset ($ vars ['orderby']) && 'movie_reviews_rating' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_rating', 'orderby') => 'meta_value_num')); return $ vars;
Die obige Funktion ist dem Anforderungsfilter zugeordnet und fügt dem Abfrage-Array Elemente hinzu, die auf den Variablen in der Abfrage-URL basieren. Eigentlich weiß WordPress nicht, wie es mit den Feldern "Movie Director" oder "Movie Rating" bestellt werden soll. Daher müssen wir WordPress beibringen, wie dies mit dieser Funktion geschieht.
Wir haben erfolgreich zwei sortierbare Spalten im Admin-Bereich hinzugefügt.
Hier wird gezeigt, wie benutzerdefinierte Taxonomien (in diesem Fall Kategorien) als zusätzlicher Filter auf der CPT-Auflistungsseite des WordPress-Administrators verwendet werden können, sodass Administratoren CPT-Elemente anzeigen können, die zu einer bestimmten Kategorie gehören.
Öffnen Sie Ihre Plugin-Datei und fügen Sie den folgenden Code hinzu, um eine Funktion zu registrieren, die aufgerufen werden soll, wenn WordPress die Filter-Dropdown-Liste vorbereitet.
add_action ('constra_manage_posts', 'my_filter_list'));
function my_filter_list () $ screen = get_current_screen (); global $ wp_query; if ($ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Alle Filmgenres anzeigen', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre', 'bestellen '=>' name ',' selected '=> (isset ($ wp_query-> query [' movie_reviews_movie_genre '])? $ wp_query-> query [' movie_reviews_movie_genre ']: "),' hierarchisch '=> false,' tiefe '=> 3,' show_count '=> false,' hide_empty '=> true,));
Hier haben wir eine globale Variable verwendet, um die Art des Postens zu kennen, der angezeigt wird, und eine Post-Abfrage-Variable, um zu überprüfen, ob bereits ein Filter vorhanden ist, und den Filter entsprechend festzulegen. Das wp_dropdown_categories
Mit dieser Funktion können Sie alle mit Movie Genres registrierten Taxonomien anzeigen. Das 'Sortieren nach
','show_count
','hide_empty
','Tiefe
'usw. sind verschiedene Argumente, die die Sortierung angeben. Zeigen Sie die Anzahl der Elemente für jede Kategorie an, blenden Sie nicht verknüpfte Kategorien aus und bestimmen Sie die maximale Tiefe, die für die hierarchischen Kategorien angezeigt werden soll.
Nachdem die Filter-Dropdown-Liste erstellt wurde, schreiben wir Code, um die gefilterten Ergebnisse anzuzeigen. Registrieren Sie eine Funktion, die aufgerufen werden soll, wenn die Nachanzeigeabfrage vorbereitet wird.
add_filter ('parse_query', 'perform_filtering');
Funktion perform_filtering ($ query) $ qv = & $ query-> query_vars; if (($ qv ['movie_reviews_movie_genre']) && is_numeric ($ qv ['movie_reviews_movie_genre']))) $ term = get_term_by ('id', $ qv ['movie_reviews_movie_genre'], 'movie_reviews_movie_re' ' $ qv ['movie_reviews_movie_genre'] = $ term-> slug;
Das perform_filterung
Die Funktion empfängt das aktuelle WordPress-Post-Abfrageobjekt und beginnt mit dem Abrufen eines Zeigers auf die im Abfrageobjekt gespeicherten Abfragevariablen. Dann wird überprüft, ob ein Filmgenre Teil der Abfragevariablen ist, und die Abfrage wird dann ausgeführt.
Jetzt können Sie den Filter verwenden, um die Filme nach ihren Genres anzuzeigen.
Da wir eine benutzerdefinierte Vorlage für unser CPT erstellt haben, können wir auch eine benutzerdefinierte Archivseite erstellen, die die Standard-Archivvorlage überschreibt.
Öffnen Sie die Plugin-Datei Movie-Reviews.php und fügen Sie den hervorgehobenen Code im hinzu include_template_function
Funktion.
function include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // prüft, ob die Datei zuerst im Theme vorhanden ist, // die Datei andernfalls über das Plugin if ($ theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file; else $ template_path = plugin_dir_path (__FILE__). '/single-movie_reviews.php'; elseif (is_archive ()) if ($ theme_file = locate_template (array ('archive-movie_reviews.php'))) $ template_path = $ theme_file; else $ template_path = plugin_dir_path (__FILE__). '/archive-film_reviews.php'; return $ template_path;
WordPress durchsucht das Designverzeichnis nach einer Archivvorlagendatei, bevor die Standardvorlage verwendet wird. Diese Funktion prüft, ob der Benutzer eine Archivvorlage im Designverzeichnis angegeben hat. Andernfalls sucht er nach der Datei im Ordner des Plugins.
Speichern und schließen Sie die Plugin-Datei und erstellen Sie eine neue Datei mit dem Namen archive-movie_reviews.php und fügen Sie den folgenden Code hinzu.
Filmkritiken
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>
Titel Direktor ">
Hier haben wir die Schleife verwendet, um die Post-Einträge zu durchlaufen und sie dann in einem Tabellenlayout anzuzeigen. Wir haben auch ein Navigationsmenü definiert, wenn mehr Elemente vorhanden sind als die in den WordPress-Einstellungen konfigurierte maximale Anzahl. Navigationsmenüs werden mit angezeigt next_post_links
und vorherige_post_links
Funktionen.
Wir haben das Globale genutzt wp_query
Objekt, das die Daten zur aktuell ausgeführten Abfrage enthält, um den Seiteninhalt darzustellen. Das get_post_meta
Funktion wurde verwendet, um benutzerdefinierte Felddaten abzurufen.
Speichern Sie die Datei und suchen Sie auf der Archivseite nach der Movie Reviews-Archivliste.
Hier kommen wir zum Ende dieses Tutorials. Ich hoffe, Sie konnten die Bedeutung von benutzerdefinierten Post-Typen verstehen. Es gibt noch mehr zu entdecken, spielen Sie einfach damit herum.
Vielen Dank für das Lesen und geben Sie uns Ihr Feedback.