WordPress bietet die Möglichkeit eigene Metaboxen zu erstellen. Sie sind eine Art Fenster, die beim Bearbeiten eines Beitrags, einer Seite oder eines eigenen Artikeltyps erscheinen.
Im Nachfolgenden Bild sehen Sie einige Metaboxen. Aktiviert werden sie meist über das Einstellungsfenster am oberen Rand im Administrationsbereich.
Metaboxen erstellen
WordPress nutzt dazu die Funktion add_meta_box()
. Sie ist wie folgt definiert:
<?php
function add_meta_box( $id, $title, $callback, $screen = null, $context = 'advanced', $priority = 'default', $callback_args = null ) {
...
}
?>
Wobei gilt:
Metabox-Formularinhalte speichern
In den meisten Fällen werden Metaboxen nicht dazu benutzt lediglich Inhalte darzustellen. Vielmehr soll der Benutzer mit den dort einprogrammierten Eingabefeldern interagieren können.
WordPress nutzt dafür eine mächtiges Werkzeug: die Metadata API. Sie ist ein standardisiertes Werkzeug um alle möglichen zusätzlichen Daten zu den verschiedensten Objekten zu speichern.
Wenn Sie einen Blick auf die unterschiedlichen Datenbanken in WordPress werfen, werden Sie feststellen, dass es mehrere Metadaten-Tabellen gibt:
Post-Meta Inhalte abrufen
Sie haben nun gelernt eine Metabox zu erstellen und Daten in die Metabox zu speichern. Nun fehlt nur noch ein Schritt: Das Abrufen dieser Inhalte. Die Checkbox muss, je nach Meta-Wert, aktiviert oder deaktiviert angezeigt werden. Im Moment wird die Checkbox immer als deaktiviert angezeigt. Egal welcher Wert in der Datenbank gespeichert wurde.
Wir ergänzen die Funktion mm_meta_box()
wie folgt:
Post-Meta Inhalte löschen
Man sollte nicht davon ausgehen, dass WordPress nicht länger benötigte Meta-Keys automatisch löscht. Woher sollte es das auch wissen? Sie selbst sind dafür verantwortlich, dass Inhalte, die Sie erstellt haben, auch wieder ordnungsgemäß entfernen, wenn diese nicht mehr benötigt werden. Ein guter Ansatz ist, Meta-Keys immer dann zu löschen, wenn Sie ohnehin keinen Wert mehr enthalten. In unserem Beispiel oben also immer dann, wenn der Wert der Checkbox 0
ist.
Fallstricke bei der Arbeit mit Metaboxen
Vielleicht ist es Ihnen auch schon öfter passiert: Sie schreiben an einem neuen Artikel in WordPress aber plötzlich schließen Sie voller Euphorie Ihr Browser-Fenster. Alle Texte weg? Gott sei Dank nicht. Denn WordPress speichert alle Inhalte in regelmäßigen Zeitabständen per Ajax automatisch. Die so genannte „Autosave“-Funktion hat schon manch verzweifelten Benutzer wieder freudig gestimmt.
So gut diese Funktion auch ist, sie hat einen Nachteil: sie aktualisiert auch Metabox-Formulardaten. Sie meinen, das ist nichts verwerfliches? Da haben Sie recht, aber es gibt Situationen in denen das nicht angebracht ist.
Hier ein Beispiel: