5.2. Metaboxen

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.

Abb. 4.2.: Metaboxen und Einstellungsfenster
Abb. 4.2.: Metaboxen und Einstellungsfenster

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:

You’re not allowed to see this content. Please log in first.

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:

You’re not allowed to see this content. Please log in first.

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:

You’re not allowed to see this content. Please log in first.

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.

You’re not allowed to see this content. Please log in first.

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:

You’re not allowed to see this content. Please log in first.

Komplettes Beispiel

You’re not allowed to see this content. Please log in first.