Schema Functions
Stel functionaliteiten van de PHP-programmeertaal beschikbaar via GraphQL-velden en -richtlijnen.

Click to watch tutorial video - 07:54
Het GraphQL-schema is uitgebreid met velden en richtlijnen die functionaliteiten van de PHP-programmeertaal beschikbaar stellen.
Functievelden
Functievelden zijn globale velden en worden daarom aan elk type in het GraphQL-schema toegevoegd: in QueryRoot, maar ook in Post, User, enz.
Functievelden zijn handig voor het bewerken van gegevens nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.
Stel dat we een veld Post.hasComments hebben, maar de tegengestelde waarde nodig hebben. In plaats van een nieuw veld Post.notHasComments te maken (waarvoor je PHP-code zou moeten aanpassen), kun je de Field to Input-functie gebruiken om de waarde van hasComments door te geven aan een not-veld, zodat de nieuwe waarde altijd binnen de GraphQL-query wordt berekend:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Functierichtlijnen
Het GraphQL-schema is uitgebreid met richtlijnen die functionaliteiten beschikbaar stellen die veel voorkomen in programmeertalen (zoals PHP).
Richtlijnvelden zijn handig voor het bewerken van gegevens nadat ze zijn opgehaald. Ze stellen je in staat een veldwaarde op elke gewenste manier te transformeren en bieden krachtige mogelijkheden voor het importeren en exporteren van gegevens.
Bijvoorbeeld deze query:
query {
posts {
title @strUpperCase
}
}...geeft het volgende antwoord:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Helpervelden
Het GraphQL-schema is uitgebreid met velden die veelgebruikte helperfunctionaliteit bieden.
Helpervelden zijn globale velden en worden daarom aan elk type in het GraphQL-schema toegevoegd: in QueryRoot, maar ook in Post, User, enz.
In deze query halen we de ID's op van de gebruikers op de website en voeren we een nieuwe GraphQL-query uit waarbij we hun ID als parameter meegeven:
query {
users {
userID: id
url: _urlAddParams(
url: "https://somewebsite/endpoint/user-data",
params: {
userID: $__userID
}
)
headers: _httpRequestHeaders
headerNameValueEntryList: _objectConvertToNameValueEntryList(
object: $__headers
)
_sendHTTPRequest(input: {
url: $__url
options: {
headers: $__headerNameValueEntryList
}
}) {
statusCode
contentType
body
}
}
}Omgevingsvelden
Het GraphQL-schema is uitgebreid met het globale veld _env, waarmee je een waarde kunt ophalen uit een omgevingsvariabele of uit een PHP-constante (meestal gedefinieerd in wp-config.php, maar ook elders te definiëren).
Deze query haalt de omgevingsconstante GITHUB_ACCESS_TOKEN op, die je kunt instellen om toegang te krijgen tot een privérepository op GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}E-mailverzending
Het GraphQL-schema is uitgebreid met de globale mutatie _sendEmail.
De mutatie _sendEmail verstuurt e-mails door de WordPress-functie wp_mail uit te voeren. Daardoor maakt het gebruik van de configuratie die in WordPress is gedefinieerd voor het versturen van e-mails (zoals de te gebruiken SMTP-provider).
De e-mail kan worden verstuurd met het inhoudstype "text" of "HTML", afhankelijk van de waarde van de invoer messageAs (een "oneof" InputObject, zodat slechts één van de eigenschappen opgegeven kan worden).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}