Die Allow/Denylist für Meta-Werte definieren
Wir können Meta-Werte für benutzerdefinierte Beiträge, Benutzer, Kommentare und Taxonomien (Tags und Kategorien) abrufen, indem wir die Felder metaValue (für einen einzelnen Wert) und metaValues (für ein Array von Werten) des entsprechenden Typs abfragen:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Wir können Ergebnisse für benutzerdefinierte Beiträge, Benutzer, Kommentare und Taxonomien (Tags und Kategorien) auch anhand von Meta filtern, über das Eingabefeld metaQuery.
Sowohl beim Abfragen als auch beim Filtern können Meta-Werte öffentlich oder privat sein. Zum Beispiel enthält das Benutzer-Meta den Eintrag wp_capabilities, der privat ist, während description öffentlich ist. Und dann gibt es last_name, der je nach Anwendung öffentlich oder privat sein kann.
Das Gato GraphQL Plugin legt nicht fest, welche Meta-Schlüssel öffentlich und welche privat sind; das muss explizit konfiguriert werden. Standardmäßig ist die Liste der erlaubten Meta-Schlüssel leer.
Antwort des Meta-Werts
Wenn du einen Meta-Schlüssel abfragst, dessen Zugriff auf der entsprechenden Einstellungsseite nicht erlaubt ist, gibt die Query einen Fehler zurück.
Zum Beispiel liefert das Ausführen dieser Query:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}Folgendes zurück:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}Wenn der Meta-Schlüssel für das abgefragte Objekt nicht existiert oder sein Wert leer ist, ist die Antwort null. Andernfalls ist die Antwort der Meta-Wert.
Die erlaubten Meta-Schlüssel konfigurieren
Dies ist die Beschreibung für das Modul "Custom Post Meta". Für die Module Users, Comments und Taxonomies ist das Vorgehen ähnlich.
Wir müssen die Liste der Meta-Schlüssel konfigurieren, die über die Meta-Felder abgefragt werden können.
Jeder Eintrag kann entweder sein:
- Ein Regex (regulärer Ausdruck), wenn er von
/oder#umgeben ist, oder - Der vollständige Meta-Schlüssel, andernfalls
Zum Beispiel entspricht jeder dieser Einträge dem Meta-Schlüssel "_edit_last":
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
Es gibt 2 Stellen, an denen diese Konfiguration vorgenommen werden kann, in der Reihenfolge der Priorität:
- Benutzerdefiniert: In der entsprechenden Schema-Konfiguration
- Allgemein: Auf der Einstellungsseite
Wähle in der auf den Endpoint angewendeten Schema-Konfiguration die Option "Use custom configuration" und gib dann die gewünschten Einträge ein:

Andernfalls werden die in der Registerkarte "Schema Custom Post Meta" der Einstellungen definierten Einträge verwendet:

Es gibt 2 Verhaltensweisen, "Allow access" und "Deny access":
- Allow access: nur die konfigurierten Einträge sind zugänglich, alle anderen nicht
- Deny access: die konfigurierten Einträge sind nicht zugänglich, alle anderen Einträge schon
