Die WordPress-Community ist begeistert von dem bald erscheinenden WordPress 3.0. Derzeit in Beta 2 wird WordPress 3.0 viele aufregende neue Funktionen enthalten, z. B. ein neues Standarddesign und eine bessere Menüverwaltung. Möglicherweise ist die aufregendste dieser Funktionen benutzerdefinierte Posttypen. In diesem Lernprogramm werden wir über das Erstellen und Verwenden benutzerdefinierter Post-Typen für ein grundsolides Thema sprechen.
Nun, laut dem WordPress-Codex:
"Post-Typ" bezieht sich auf die verschiedenen strukturierten Daten, die in der WordPress-Posts-Tabelle gepflegt werden. Benutzerdefinierte Post-Typen ermöglichen Benutzern das einfache Erstellen und Verwalten von Dingen wie Portfolios, Projekten, Videobibliotheken, Podcasts, Zitate, Chats und anderen Benutzern oder Entwicklern kann mir vorstellen."
Im Wesentlichen ermöglicht es uns Entwicklern, neue Arten von Posts zu erstellen, die den Post- und Seitentypen ähneln, die alle in der Hauptnavigation des WordPress-Administrators angezeigt werden. Das hat mehrere Vorteile. Vor allem brauchen wir keine Plugins mehr, um spezielle Typen zu erstellen. Wir können ein Design erstellen, das weniger auf benutzerdefinierten Feldern basiert (wie wir sie kennen), und sie erleichtern die Verwaltung der Site für Kunden und nicht-technische Benutzer. Anstatt ihnen zu sagen, dass sie einen "Beitrag" erstellen und sicherstellen sollen, dass sie alle möglichen benutzerdefinierten Felder für Musik ausfüllen, können wir ihnen einfach sagen, dass sie auf "Musik" klicken müssen, um einen neuen Musikbeitrag hinzuzufügen.
In diesem Tutorial werden wir:
All dies wird in der Datei functions.php unseres Themas ausgeführt. Ich verändere das Standarddesign 3.0, TwentyTen.
Als erstes teilen wir WordPress mit, dass wir einen neuen benutzerdefinierten Typ registrieren möchten. Hier ist der Code:
add_action ('init', 'product_register'); Funktion product_register () $ args = array ('label' => __ ('Products'), 'singular_label' => __ ('Product'), 'public' => true, 'show_ui' => true, 'Capability_type '=>' post ',' hierarchical '=> false,' rewrite '=> true,' unterstützt '=> array (' title ',' editor ',' thumbnail ')); register_post_type ('product', $ args);
Die erste Zeile ist ein Haken, um WordPress mitzuteilen, dass wir die Funktion aufrufen möchten product_register ()
während der Initialisierung. In dieser Funktion registrieren wir den neuen Beitragstyp.
Die Funktion register_post_type ()
akzeptiert zwei Argumente: den Namen, den wir unserem Beitragstyp geben möchten, und eine Liste von Argumenten, die zum Erstellen dieses Beitragstyps verwendet werden, die wir in ein Array mit dem Namen einfügen $ args
. Sie können genau lesen, was alle Argumente hier sind, aber ich möchte auf die wichtigen hinweisen.
Fügen wir unsere eigenen benutzerdefinierten Eingaben für unseren neuen Typ hinzu. Da wir jetzt neue Beitragstypen erstellen können, können wir die benutzerdefinierten Felder für Benutzer rationalisieren, die mit WordPress nicht so vertraut sind wie wir. Es sei darauf hingewiesen, dass diese Funktionalität seit 2.5 verfügbar ist und bis zu diesem Zeitpunkt hauptsächlich von Plugin-Entwicklern verwendet wurde. Hier fügen wir ein Preisfeld hinzu.
ICH WÜRDE); $ price = $ custom ["price"] [0]; ?> ID, "price", $ _POST ["price"]); ?>
Noch einmal, die ersten paar Zeilen sind Haken, um WordPress mitzuteilen, wann wir bestimmte Funktionen verwenden wollen. Die erste Zeile besagt, dass bei der Initialisierung des Verwaltungsbereichs die von uns geschriebene Funktion aufgerufen wird, admin_init ()
. Diese Funktion weist WordPress an, einen Bereich mit dem Namen "Product Options" zu allen Posts des Typs "product" hinzuzufügen und die Funktion zu verwenden meta_options ()
um die Formularfelder auszudrucken. Weitere Informationen zu add_meta_box finden Sie hier. meta_options ()
erhält dann alle bereits vorhandenen benutzerdefinierten Werte und druckt das Formularfeld aus. Die zweite Aktionszeile gibt an, dass beim Speichern eines Beitrags unsere Funktion aufgerufen wird save_price ()
, welche verwendet update_post_meta ()
Hinzufügen oder Aktualisieren eines benutzerdefinierten Felds mit dem Namen 'price'.
Der letzte Schritt beim Erstellen eines vollständig benutzerdefinierten Typs besteht darin, der Kategorie eindeutige Namen zu geben und Spaltenbeschriftungen zu bearbeiten. Zuerst der Name der benutzerdefinierten Kategorie oder "Taxonomie".
register_taxonomy ("catalog", array ("product"), array ("hierarchical" => true, "label" => "Catalogs", "singular_label" => "Catalog", "rewrite" => true));
Die Funktion, die wir verwenden, ist register_taxonomy ()
, was Sie hier im Kodex finden können; es ist seit 2.8 verfügbar. Es heißt im Wesentlichen, dass wir einen neuen Kategorietyp namens "Katalog" erstellen möchten, den wir mit dem Produkttyp verknüpfen. Das letzte Argument ist eine Reihe von Informationen, die denen ähneln, die wir gesehen haben register_post_type ()
Funktion. Wenn alles gesagt und getan ist, wird der Begriff "Katalog" unter dem Menü "Produkte" des WordPress-Administrators angezeigt, und er verhält sich wie Post-Kategorien.
Als Nächstes möchten wir einen benutzerdefinierten Satz von Spalten für unseren Produkttyp erstellen.
add_filter ("manage_edit-product_columns", "prod_edit_columns"); add_action ("manage_posts_custom_column", "prod_custom_columns"); Funktion prod_edit_columns ($ Spalten) $ Spalten = Array ("cb" => "")"," title "=>" Product Title "," description "=>" Description "," price "=>" Price "," catalog "=>" Catalog ",); Rückgabe von $ column; Funktion prod_custom_columns ($ column) global $ post; switch ($ column) case "description": the_excerpt (); break; case "price": $ custom = get_post_custom (); echo $ custom ["price"] [0]; break; case "catalog": echo get_the_term_list ($ post-> ID, 'catalog', ',', ','); break;
Die ersten beiden Zeilen sind Haken, um WordPress mitzuteilen, dass benutzerdefinierte Spalten für den Produkttyp gewünscht werden. In der ersten Zeile wird angegeben, dass beim Drucken von Spalten für den Produkttyp die in der Funktion definierten Spalten verwendet werden prod_edit_columns ()
.
Im prod_edit_columns ()
, Wir haben ein Schlüssel-Wert-Array, in dem die Schlüssel verwendet werden, um auf bestimmte Post-Informationen zu verweisen, die wir in der zweiten Funktion definieren, prod_custom_columns ()
. Die Werte in diesem Array sind die Spaltenüberschriften. Das merkt man vielleicht prod_edit_columns ()
listet fünf Spalten auf, aber wir beschreiben nur Anzeigeinformationen für drei in prod_custom_columns ()
. 'cb' und 'title' sind Teil einer Reihe von Standardschlüsseln, für die WordPress bereits Zuordnungen hat. WordPress weiß nicht, was die anderen drei sind, also müssen wir sie definieren.
Nicht zu schäbig, richtig? Und jetzt sind wir endlich am lustigen Teil - der Theme-Vorlage. Um eine Designvorlage für einen benutzerdefinierten Beitragstyp zu erstellen, nennen wir die Vorlage einfach single-
ICH WÜRDE); $ price = "$". $ custom ["price"] [0]; ?>>- =$price?>
Ich habe diesen Code dem Twentyten Theme in WordPress 3.0 Beta hinzugefügt, da er das einzige Theme ist, das die neue Funktionalität unterstützt, nämlich das Menüsystem. Ich habe die Vorlage "single.php" kopiert, in "single-product.php" umbenannt und alles in der div -Datei "content" durch den Code oben ersetzt. Um meinen Code zu testen, ging ich zu Themes -> Menüs und fügte unseren neuen Typ zur Navigation meiner Website hinzu. Dann habe ich zu unserem benutzerdefinierten Beitragstyp geklickt.
Einpacken
Wie bereits erwähnt, befindet sich WordPress 3.0 noch in der Beta-Phase (Sie können es hier erhalten); Es gibt also noch einige Fehler, die zu beheben sind, und einige Dinge können sich in der endgültigen Version ändern. Das Beste, was Sie tun können, ist dort reinzukommen und mit den neuen Funktionen zu spielen, um sich mit den Updates / Änderungen vertraut zu machen. Nach allem, was ich bisher gesehen habe, sehen die Dinge ziemlich gut aus!