Manchmal reichen die standardmäßigen Felder eines benutzerdefinierten Beitragstyps nicht aus, und Sie müssen zusätzliche Daten in einem benutzerdefinierten Beitragstyp speichern.
Glücklicherweise unterstützt WordPress sogenannte Beitragsmetadaten, mit denen Sie zusätzliche Informationen zu einem Beitrag speichern können.
Sehen wir uns an, wie Sie Beitragsmetadaten für einen Beitrag oder einen benutzerdefinierten Beitragstyp verwenden können.
Was sind Beitragsmetadaten
Beitragsmetadaten bieten eine Möglichkeit, zusätzliche Informationen zu einem Beitrag in der WordPress-Datenbank zu speichern.
Beitragsmetadaten werden in der Tabelle postmeta als Schlüssel-Wert-Paare gespeichert. Wenn Sie sich die Tabelle postmeta in der WordPress-Datenbank ansehen, werden Sie feststellen, dass sie vier Spalten enthält: meta_id, post_id, meta_key und meta_value.
post_id ist die ID des Beitrags, dem die Metadaten zugeordnet sind. meta_key ist der Name des Metadatenfelds und meta_value ist dessen Wert.
Beitragsmetadaten hinzufügen
Sie können einem Beitrag mithilfe der add_post_meta–Funktion Beitragsmetadaten hinzufügen. Diese Funktion nimmt drei Parameter entgegen: die ID des Beitrags, den Namen der Metadaten und den Wert der Metadaten.
Angenommen, Sie möchten einem Beitrag mit der ID 1 ein Beitragsmetadatenfeld hinzufügen und den Ort, an dem der Beitrag verfasst wurde, als London speichern.
Sie könnten den folgenden Code verwenden:
add_post_meta( 1, 'location', 'London' );
Es gibt weitere Funktionen für die Arbeit mit Beitragsmetadaten, wie etwa update_post_meta, delete_post_meta und get_post_meta.
Mehr über diese Funktionen und ihre Verwendung in Plugins erfahren Sie auf der Seite Metadaten im Plugin-Entwicklerhandbuch.
Das Panel „Benutzerdefinierte Felder“
Das Hinzufügen von Beitragsmetadaten per Code ist eine Möglichkeit, aber Sie können Website-Administratoren auch ermöglichen, Beitragsmetadaten über die WordPress-Administrationsoberfläche hinzuzufügen.
Eine Möglichkeit hierfür ist das Panel „Benutzerdefinierte Felder“ für den Beitragstyp.
Um das Panel „Benutzerdefinierte Felder“ zu aktivieren, müssen Sie zunächst sicherstellen, dass Ihr benutzerdefinierter Beitragstyp Metadaten unterstützt.
Dazu müssen Sie das Argument supports hinzufügen oder aktualisieren und die Unterstützung für custom-fields einschließen.
Klicken Sie beim Bearbeiten eines benutzerdefinierten Beitragstyps auf das Optionssymbol des Editors, wählen Sie „Einstellungen“, klicken Sie auf „Panels“ und aktivieren Sie den Schalter „Benutzerdefinierte Felder“.
Dadurch wird der Editor aktualisiert und Sie sehen das Panel „Benutzerdefinierte Felder“ am unteren Bildschirmrand.
Hier können Sie ein neues benutzerdefiniertes Feld hinzufügen und ihm einen Namen sowie einen Wert geben.
Wenn Sie beispielsweise die ISBN eines Buches hinzufügen möchten, könnten Sie ein neues benutzerdefiniertes Feld mit dem Namen isbn und dem ISBN-Wert hinzufügen.
Dieses Panel verwendet die Funktion add_post_meta, um die Metadaten zum Beitrag hinzuzufügen.
Vorausgefüllte Feldnamen für das Panel „Benutzerdefinierte Felder“
Es ist auch möglich, das Feld „Name“ des Panels „Benutzerdefinierte Felder“ mit einer Liste vordefinierter Metadatenfelder zu füllen.
Dazu müssen Sie den postmeta_form_keys–Filter verwenden und die Namen der Metadatenfelder hinzufügen, die im Panel „Benutzerdefinierte Felder“ angezeigt werden sollen.
Der Filter postmeta_form_keys wird ausgelöst, bevor das HTML des Panels „Benutzerdefinierte Felder“ gerendert wird, und erhält zwei Parameter: ein Array mit Metadatenschlüsseln und das Beitragsobjekt.
Wenn keine anderen Schlüssel definiert sind, wird eine Abfrage ausgeführt, um die Schlüssel aller vorhandenen Metadaten des Beitrags abzurufen.
Indem Sie also das Array der Metadatenschlüssel aktualisieren, können Sie Metadatenfeldschlüssel zum Panel „Benutzerdefinierte Felder“ hinzufügen und es Ihren Benutzern erleichtern, die richtigen Metadaten hinzuzufügen.
Hier ist ein Beispiel dafür:
add_filter( 'postmeta_form_keys', 'bookstore_add_isbn_to_quick_edit', 10, 2 );
function bookstore_add_isbn_to_quick_edit( $keys, $post ) {
if ( $post->post_type === 'book' ) {
$keys[] = 'isbn';
}
return $keys;
}
Sie registrieren eine Callback-Funktion für den Filter postmeta_form_keys und legen die Anzahl der akzeptierten Argumente auf 2 fest, um beide Argumente des Filters entgegenzunehmen.
Prüfen Sie anschließend, ob der Beitragstyp „book“ ist, und fügen Sie in diesem Fall die Option isbn zum Array $keys hinzu. Geben Sie danach dieses Array zurück.
Wenn der Beitragstyp book ist, wird das Metadatenfeld isbn zum Panel „Benutzerdefinierte Felder“ hinzugefügt.
Wenn Sie ein Buch erstellen oder bearbeiten und das Panel „Benutzerdefinierte Felder“ aktiviert ist, sehen Sie das Feld isbn, über das Sie dem Beitrag Metadaten hinzufügen können.
Benutzerdefinierte Metaboxen
Eine weitere Möglichkeit, Website-Administratoren das Hinzufügen von Beitragsmetadaten zu ermöglichen, besteht in der Verwendung benutzerdefinierter Metaboxen.
Die Arbeit mit benutzerdefinierten Metaboxen setzt jedoch ebenfalls ein gutes Verständnis für die sicherheitsbewusste Entwicklung voraus. Vorerst können Sie darüber auf der Seite Benutzerdefinierte Metaboxen im Plugin-Entwicklerhandbuch lesen.
Im Lernpfad für Plugin-Entwickler erfahren Sie, wie Sie mit Metaboxen arbeiten.