In den letzten Jahren hat sich WordPress wirklich zu einem vollwertigen Content-Management-System entwickelt, und wenn Sie einige seiner Funktionen wirklich entfesseln, stellen Sie fest, dass WordPress für fast jede Art von Website verwendet werden kann.
Mein Heureka-Moment kam, als mich ein Kunde bat, ihm ein Auftragsverfolgungssystem zu bauen. In der Vergangenheit nahm er Bestellungen für medizinische Geräte von Vertriebsmitarbeitern entgegen und erledigte seinen gesamten Papierkram manuell. Dann verbrachte er den ganzen Tag am Telefon und beantwortete Anrufe von Vertriebsmitarbeitern, um entweder neue Bestellungen aufzugeben oder den Status einer bestehenden Bestellung zu überprüfen.
Nun, er versuchte, all dies zu ändern, indem er eine Website erstellte, auf der er alle seine Bestellungen eingeben konnte, und seine Kunden konnten dann nach Belieben ihren Status überprüfen und sogar E-Mail-Updates erhalten, wenn die Bestellung mit neuen Informationen aktualisiert wurde. Die Idee war, dass er dann mehr Zeit hat, sein Geschäft tatsächlich auszubauen, anstatt den ganzen Tag am Telefon zu verbringen und Verwaltungsarbeiten zu erledigen.
BENUTZERDEFINIERTE POSTTYPEN
Die Antwort auf sein Problem lag in der Leistungsfähigkeit benutzerdefinierter Beitragstypen. Standard-WordPress-Sites haben zwei Arten von Beitragstypen: Beiträge und Seiten, aber Sie können so viele hinzufügen, wie Sie möchten. Möglicherweise haben Sie sogar einige von Themen oder Plugins auf Ihrer Website, die Dinge wie Veranstaltungen, Immobilienangebote, Produkte oder Schieberegler unterstützen.
In diesem Fall musste ich einen benutzerdefinierten Beitragstyp für seine Bestellungen erstellen. Diese würden dann die Informationen für jede Bestellung beherbergen, die auf dem Frontend angezeigt werden, damit seine Kunden sie sehen können.
Ich werde nicht auf den Prozess des Erstellens eines benutzerdefinierten Beitragstyps eingehen, da ich dies bereits in einem anderen Tutorial behandelt habe: Registrieren benutzerdefinierter Beitragstypen.
Was ich hier besprechen möchte, ist, wie Sie Ihre Daten organisieren und so anzeigen, wie Sie es benötigen. Der Standard-WordPress-Editor eignete sich beispielsweise nicht zum Erfassen dieser Bestellungen, da er keine einzelnen Bereiche für all die kleinen Informationen hat, die die Bestellung ausmachten, wie Patientenname, Bestellnummer und Bestellvertreter, die erforderlich wären sowohl am Frontend der Site als auch in E-Mails an den archivierten Mitarbeiter aufgerufen werden.
Hier kamen benutzerdefinierte Metaboxen ins Spiel. Benutzerdefinierte Metaboxen ermöglichen es Ihnen, neue „Fenster“ in Ihrem Editor zu erstellen, um bestimmte Informationen zu speichern. Während der Post-Editor also eine riesige Box für Ihren Post-Inhalt hat, benötigen Sie dies möglicherweise nicht für Ihren benutzerdefinierten Post-Typ, da ich dies bei meinem benutzerdefinierten Post-Typ nicht getan habe. Daher habe ich den Editor deaktiviert, als ich den benutzerdefinierten Beitragstyp registriert habe, sodass ich die volle Kontrolle über den Dateneingabebildschirm hatte, wie Sie unten sehen werden.
BENUTZERDEFINIERTE META-BOXEN
Benutzerdefinierte Meta-Boxen ist ein Skript, das das Erstellen dieser Metaboxen unglaublich einfach macht. Darüber hinaus wurden einige der komplexeren Feldtypen (wie Farbwähler, Datumswähler und WYSIWYG-Editoren) übernommen und die gesamte Codierung für Sie erledigt, sodass Sie nur noch festlegen müssen, welchen Typ jedes Feld haben soll, und es wird magisch erscheinen.
Das Einbinden in Ihr Theme oder Plugin ist ein sehr einfacher Vorgang. Alles, was Sie tun müssen, ist die Dateien von der herunterzuladen GitHub-Repository und kopiere sie in deine eigene Theme- oder Plugin-Ordnerstruktur. Ich empfehle, die Dateien zur besseren Organisation in eine Bibliothek oder einen Ordner zu legen. In meinen Plugins lade ich alle Dateien in /wp-content/plugins/my-plugin/includes/metabox/ hoch.
Nachdem alle Dateien und Ordner an den von Ihnen gewählten Ort hochgeladen wurden, müssen Sie sie nur noch „aktivieren“ und zur Verwendung zur Verfügung stellen, indem Sie init.php aus Ihrem Plugin einbinden. In meinem Beispiel war beispielsweise die folgende Funktion in der Haupt-Plugin-Datei enthalten, um die init.php im Ordner /includes/metabox/ aufzurufen:
function be_initialize_cmb_meta_boxes() {
if ( !class_exists( 'cmb_Meta_Box' ) ) {
require_once( 'includes/metabox/init.php' );
}
}
add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );
Jetzt sind Sie in der Lage, die Funktionalität des Skripts tatsächlich zu nutzen. Die example-functions.php ist ein großartiger Ort, um zu lernen, wie das Skript funktioniert. Es enthält ein Beispiel für die Syntax, die erforderlich ist, um jeden Feldtyp einzuschließen, den das Skript zulässt. Folgende Feldtypen stehen zur Auswahl:
- Titel (zum Organisieren Ihrer Metaboxen im Dashboard)
- Text (klein, mittel & groß)
- Datumsauswahl (Standard- oder UNIX-Zeitstempel)
- Währung
- Textbereich (klein und groß)
- Dropdown-Liste
- Optionsfelder (inline und Standard)
- Checkbox (einzeln und mehrfach)
- WYSIWYG-Editor
- Taxonomieauswahl (Dropdown, Kontrollkästchen oder Optionsfelder)
- Datei-Uploader
- Dateiliste
Sie müssen nur entscheiden, welche Informationen Sie erfassen möchten und welcher Feldtyp jeweils am besten geeignet ist.
Um Ihnen dieses Skript zu demonstrieren, verwende ich ein einfacheres Beispiel als das zuvor erwähnte Bestellsystem, da es komplexer ist. Ich habe vor kurzem ein Plugin geschrieben, in dem ich ein einfaches Warnsystem erstellt habe, in dem der Administrator den Titel der Warnung, ihre Priorität, die Beschreibung der Warnung und ihre Lösung angeben kann.
Um dies zu handhaben, habe ich den Beitragstitel für den Warnungstitel, Inline-Radiobuttons zum Festlegen der Priorität und WYSIWYG-Editoren zum Schreiben der Beschreibung und Auflösung verwendet (was eine einfache umfassende Bearbeitung wie Aufzählungslisten und Textformatierung ermöglicht).
Die folgende Funktion ist der gesamte Code, der dies erreicht: Sie werden feststellen, dass sie dem Format der Datei example-functions.php folgt. Ich beschreibe jeden Teil des Codes nach:
function twpb_alerts_metaboxes( $meta_boxes ) {
$prefix = 'twpb_alert_'; // Prefix for all fields
$meta_boxes[] = array(
'id' => 'alert_metabox',
'title' => 'Alert Information',
'pages' => array('twpb_alerts'), // post type
'context' => 'normal',
'priority' => 'high',
'show_names' => true, // Show field names on the left
'fields' => array(
array(
'name' => 'Priority',
'desc' => '',
'id' => $prefix . 'priority',
'type' => 'radio_inline',
'options' => array(
array( 'name' => 'High', 'value' => 'high', ),
array( 'name' => 'Medium', 'value' => 'medium', ),
array( 'name' => 'Low', 'value' => 'low', ),
),
),
array(
'name' => 'Description of issue',
'desc' => 'Enter a description of what the issue is.',
'id' => $prefix . 'description',
'type' => 'wysiwyg',
'options' => array( 'textarea_rows' => 5, ),
),
array(
'name' => 'Proposed resolution',
'desc' => 'Inform users how they can resolve the issue.',
'id' => $prefix . 'resolution',
'type' => 'wysiwyg',
'options' => array( 'textarea_rows' => 5, ),
),
),
);
return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'twpb_alerts_metaboxes' );
In Zeile 2 habe ich ein eindeutiges Präfix für die benutzerdefinierten Felder festgelegt, um einen Konflikt mit anderen Plugins zu vermeiden, und in Zeile 4 habe ich der Metabox eine eindeutige ID gegeben, die im benutzerdefinierten Beitragstyp im Dashboard angezeigt wird. Zeile 5 legt den Titel der Metabox fest und Zeile 6 legt fest, welche benutzerdefinierten Beitragstypen diese Metaboxen anzeigen. Da es sich um ein Array handelt, können Sie es in beliebig viele Beitragstypen einfügen, einschließlich Beiträgen und Seiten, wenn Sie möchten.
Zeile 10 beginnt das Array der Felder, die ich erstellen möchte. In diesem Beispiel gibt es nur drei Felder (Zeilen 11-21, 22-28 und 29-35). Jedes Feld enthält grundlegende Informationen über das Feld, eine eindeutige ID und eine Beschreibung sowie gegebenenfalls einige Optionen.
Dann sorgt Zeile 39 dafür, dass die Metaboxen angezeigt werden, und Zeile 41 hakt sich in das Skript ein, das wir ursprünglich hochgeladen haben, damit es funktioniert.
DAS ERGEBNIS?
Wie sieht das also aus? Nun, im Editor-Fenster erhalten Sie so etwas:
Wir haben jetzt also festgelegt, wie die Metaboxen erstellt und die verschiedenen Feldtypen verwendet werden, um die benötigten Informationen zu sammeln. Jetzt müssen wir es im Frontend anzeigen.
ANZEIGE DER INFORMATIONEN
Die Informationen werden nun für jeden Beitrag in der Datenbank gespeichert. Aber wenn wir es nicht aufrufen, bleibt es einfach in der Datenbank und bleibt nutzlos. Um die Informationen anzuzeigen, müssen wir die Funktion get_post_meta verwenden, die Post-Meta für einen bestimmten Post aus der Datenbank abruft.
Um dieses einfache Beispiel zu nehmen, können wir die Funktion get_post_meta in drei separaten Fällen verwenden, um jede gespeicherte Information (Priorität, Beschreibung und Auflösung) abzurufen.
<h2>Priority: <?php echo get_post_meta( $post->ID, 'twpb_alert_priority', true ); ?></h2>
<h3>Description</h3>
<?php echo get_post_meta( $post->ID, 'twpb_alert_description', true ); ?>
<h3>Resolution</h3>
<?php echo get_post_meta( $post->ID, 'twpb_alert_resolution', true ); ?>
In jedem Fall übergeben wir die Post-ID und die eindeutige ID jedes Metadatenstücks, das wir abrufen möchten (denken Sie daran, dass wir diese in der vorherigen Funktion festgelegt haben).
Dies ergibt dann am Frontend ein Ergebnis wie folgt:
ES WEITER NEHMEN
Dies war ein sehr einfaches Beispiel, aber mit ein wenig Vorstellungskraft können Sie sehen, wie mächtig dies sein kann. Um zu meinem ursprünglichen Beispiel des Auftragsverfolgungssystems zurückzukehren, dieses Plugin wurde verwendet, um Patienteninformationen (Name, Adresse, Geburtsdatum) und Bestellinformationen (bestellte Artikel, Preis, Bestellnummer, Versandunternehmen, Sendungsverfolgungsnummer, Bestellnotizen) aufzuzeichnen und Bestellunterlagen, wie Rechnungen). Zusammen mit E-Mail Benachrichtigungen, es kann ein sehr umfassendes Werkzeug sein.
Sobald Sie damit beginnen, leistungsstarke Funktionen wie diese zu entschlüsseln, die in WordPress integriert sind, was auf den ersten Blick ein wenig überwältigend erscheinen kann, erkennen Sie, wie mächtig es sein kann. Hoffentlich Tools wie Benutzerdefinierte Meta-Boxen wird Sie ermutigen, den Tauchgang zu wagen und mit der Entwicklung Ihrer eigenen hochgradig angepassten Websites zu beginnen.