Opvragen van 'gevoelige' datavelden
Het GraphQL-schema moet een balans vinden tussen publieke en private velden, om te voorkomen dat privé-informatie wordt blootgesteld in een publieke API.
Standaard kunnen alle velden in het GraphQL-schema alleen toegang krijgen tot publieke gegevens. Zo kan posts bijvoorbeeld alleen posts ophalen met de status "publish".
Daarnaast kunnen we 'gevoelige' datavelden en invoervelden aan het schema toevoegen, bedoeld voor gebruik door de beheerder, ingeschakeld voor een specifiek custom endpoint of persisted query, die ook privégegevens kunnen ophalen.
Zo zal het veldargument posts(filter:) een extra invoerveld status bevatten, waarmee we niet-gepubliceerde posts kunnen ophalen (bijv. posts met de status "pending", "draft" of "trash") voor elke gebruiker. Evenzo stelt het schema het veld Post.status beschikbaar om dit gegeven te visualiseren.
Lijst van 'gevoelige' data-elementen
De onderstaande elementen (onder andere) worden standaard behandeld als privégegevens:
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
- input
authorBy
Menu Items:
rawTitle
De standaardconfiguratie overschrijven
De hierboven genoemde elementen kunnen openbaar worden gemaakt.
Op de pagina Instellingen, op het bijbehorende tabblad voor elk element, is er een selectievakje om te configureren of ze behandeld moeten worden als 'gevoelig' of 'normaal':

'Gevoelige' data-elementen inspecteren via schema-introspectie
De eigenschap isSensitiveDataElement wordt toegevoegd aan het veld extensions bij schema-introspectie. Voer deze query uit om te ontdekken welke 'gevoelige' data-elementen het schema bevat:
query ViewSensitiveDataElements {
__schema {
types {
name
fields {
name
extensions {
isSensitiveDataElement
}
args {
name
extensions {
isSensitiveDataElement
}
}
}
inputFields {
name
extensions {
isSensitiveDataElement
}
}
enumValues {
name
extensions {
isSensitiveDataElement
}
}
}
}
}Zoek vervolgens in de resultaten naar vermeldingen met "isSensitiveDataElement": true.
'Gevoelige' data-elementen toevoegen aan endpoints
Het toevoegen van 'gevoelige' data-elementen aan het schema kan als volgt worden geconfigureerd, op volgorde van prioriteit:
Specifieke modus voor het custom endpoint of de persisted query, gedefinieerd in de schemaconfiguratie

Standaardmodus, gedefinieerd in de Instellingen
Als de schemaconfiguratie de waarde "Default" heeft, wordt de modus gebruikt die in de Instellingen is gedefinieerd:

Wanneer gebruiken
Gebruik dit wanneer het blootstellen van privé-informatie is toegestaan, zoals bij het bouwen van een statische website waarbij gegevens worden opgehaald van een lokale WordPress-instantie (d.w.z. geen publieke API).