Schon mal versucht, in WordPress Metaboxen zu erstellen? Es ist ein Chaos, nicht nur für Anfänger, sondern auch für fortgeschrittene WordPress-Entwickler. Zum Glück für die WordPress-Community kann die Community selbst elegante Lösungen für diese Art von chaotischen Problemen finden. CMB2 ist einer von ihnen.
In diesem Teil der "Toolbox des Smart WordPress Developer" werden wir uns mit CMB2 befassen, einer umfangreichen Bibliothek zum Entwickeln von benutzerdefinierten Metaboxen und Formularen in WordPress.
Da es sich hier nicht um ein Tutorial zum Erstellen benutzerdefinierter Metaboxen handelt, werde ich Ihnen nicht zeigen, wie Sie dies mithilfe der Kernfunktionalität tun. Ich werde jedoch ein paar nützliche Links herausgeben. Stattdessen gehe ich die banale Routine durch:
Erstellen der Metabox: Zugegeben, dieser Teil ist unverzichtbar, und selbst CMB2 verwendet eine ähnliche Methode, um die benutzerdefinierte Metabox mit der add_meta_box ()
Funktion ... innerhalb einer Funktion, die an die add_meta_boxes
Aktion. Nicht zu leicht, nicht zu schwer, aber dazwischen.
Erstellen Sie die Felder, die in der Metabox angezeigt werden sollen: In diesem Teil müssen Sie eine eigene Funktion erstellen (auf die Sie sich auch beziehen müssen add_meta_box ()
function) und schreiben Vanille-HTML, wie div
s und Etikette
s und Eingang
s, um Ihre Formularfelder anzuzeigen, was nicht funktioniert, wenn Sie den HTML-Code mit kompliziertem PHP binden. Texteingaben sind in Ordnung, aber Dropdowns oder Checkboxen erstellen? Bereite dich darauf vor, verwirrt zu werden. (Lassen Sie mich nicht einmal mit Datei-Uploads und Farbwählern anfangen.) Oh, Sie haben vergessen zu verwenden wp_nonce_field ()
für die Sicherheit? Schade, Ihr Code wird nie funktionieren.
Desinfizieren und speichern Sie die Feldwerte: Ja. Damit das Formular die Daten speichert, müssen Sie eine weitere Funktion verwenden, um eine Reihe von Dingen zu überprüfen, die Daten zu bereinigen und die Werte in Ihrer benutzerdefinierten Metabox zu speichern. Und Sie müssen diese Funktion mit dem verbinden save_post
Aktion. Ordentlich.
Wenn du es "den Kernweg" machen willst und ausgeben willst Std Wenn Sie ein paar Metaboxen erstellen, ist es gut für Sie, wenn Sie die Hauptstraße nehmen. Es kann natürlich vorkommen, dass Sie nicht in der Lage sein werden, Hilfsrahmen wie CMB2 zu verwenden. In diesem Fall können Sie sich auf dieses SitePoint-Tutorial von Narayan Prusty oder auf diese umfangreiche Serie von Tutorials von Tom McFarlin zu Tuts + Code beziehen.
Und was wäre, wenn ich Ihnen sagte, dass Sie benutzerdefinierte Metaboxen erstellen können, indem Sie eine Funktion erstellen, die an eine Aktion gebunden ist, und sehr intelligente Funktionen verwenden, die all die harte Arbeit beim Erstellen des HTML-Codes erledigen und alles auf magische Weise miteinander verbinden? Und glauben Sie mir, ich übertreibe kein bisschen!
Mit Hilfe von CMB2 können Sie benutzerdefinierte Metaboxen in einem Bruchteil der Zeit erstellen, die Sie damit verbringen würden, "den Kernweg" zu tun..
CMB2 gibt es in zwei Formen: in der Plugin-Form und in der Framework-Form. Wenn Sie CMB2 in Projekten verwenden möchten, die nicht für eine Community freigegeben werden, empfiehlt es sich, das Plugin zu verwenden, da das Aktualisieren des CMB2-Plugins viel einfacher wäre und Sie die Dateien nicht hinzufügen müssen der CMB2-Engine. Wenn Sie Ihr Projekt jedoch für eine Community freigeben möchten, sollten Sie CMB2 besser in das Projekt integrieren, indem Sie die Dateien von GitHub herunterladen, in den Ordner Ihres Projekts ablegen und die folgenden Zeilen verwenden:
Denken Sie jedoch daran, dass Sie die obigen Zeilen bearbeiten müssen, um auf CMB2 zu zeigen init.php
Datei.
Bevor wir unsere erste Metabox erstellen können, müssen wir unsere einzige Funktion erstellen, die an die eigene CMB2 gebunden ist cmb2_init
Aktion:
Danach ist das Erstellen der Metabox so einfach wie das Erstellen einer neuen Variablen:
'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('page', 'post', 'customposttype'), // Posttyp 'context' => 'normal', // ' normal ',' advanced 'oder' side 'priority' => 'high', // 'high', 'core', 'default' oder 'low' show_names '=> true, // Feldnamen links anzeigen' cmb_styles '=> false, // false zum Deaktivieren des CMB-Stylesheets' closed '=> true, // Metabox standardmäßig geschlossen halten;)); ?>
Nachdem Sie unsere erste benutzerdefinierte Metabox erstellt haben, ist es an der Zeit, sie mit "Feldern" aus der CMB2 zu füllen. Dies ist so einfach wie das Ausführen einer Funktion mit der soeben erstellten Metabox-Variablen:
add_field (array ('name' => 'Test Title', 'desc' => 'Dies ist eine Titelbeschreibung', 'type' => 'title', 'id' => 'wiki_test_title')); // E-Mail-Eingabe $ cmb-> add_field (array ('name' => 'Test Text Email', 'id' => 'wiki_test_email', 'type' => 'text_email',)); // file uploader $ cmb-> add_field (array ('name' => 'Test File', 'desc' => 'Ein Bild hochladen oder eine URL eingeben.', 'id' => 'wiki_test_image', 'type' => 'file', // Optional kann die Texteingabe für die URL ausgeblendet werden: 'options' => array ('url' => false,),)); // Erinnern Sie sich noch daran, als ich sagte, dass die Verwendung eines Farbwählers extrem schwierig ist, wenn Sie die Kernfunktionen verwenden? $ cmb-> add_field (array ('name' => 'Test Color Picker', 'id' => 'wiki_test_colorpicker', 'type' => 'colorpicker', 'default' => '#ffffff',))); ?>
CMB2 bietet mehr als 30 Feldtypen, darunter reguläre Texteingaben, WYSIWYG-Editoren, Datumsauswahl, Farbauswahl, Datei-Uploader und sogar Taxonomie-Selektoren. Eine vollständige Liste der Feldtypen finden Sie auf dieser Wiki-Seite von CMB2.
Die Erstellung voll funktionsfähiger benutzerdefinierter Metaboxen ist fantastisch, aber CMB2 hört hier nicht auf. Es gibt eine Reihe von Dingen, die Sie mit CMB2 machen können:
gezeigt bei
filtert und konditioniert Ihre Metaboxen ein oder aus.Um mehr über CMB2s Superkräfte wie diese zu erfahren, gibt es ein paar Seiten, die Sie sich ansehen können:
Es ist nicht zu leugnen, dass das Festhalten an dem WordPress-Kern beim Erstellen von Material nicht immer so einfach ist, wie es sich anhört. Die Verwendung von Hilfsrahmen wie CMB2 beschleunigt daher unsere Entwicklungsprozesse. Und ich glaube, obwohl CMB2 so großartig ist wie jetzt, hat es noch viel mehr Raum für Verbesserungen (nicht nur im Bereich der benutzerdefinierten Metaboxen, sondern auch in anderen Richtungen). Ich würde das also im Auge behalten Projekt, wenn ich du wäre.
Wir sehen uns im nächsten Teil, in dem wir WP-CLI besprechen, ein einzigartiges WordPress-Tool, das uns die Möglichkeit gibt, unsere WordPress-Installationen über die Befehlszeile zu verwalten.