Schema Functions
Stelle Funktionalitäten der Programmiersprache PHP über GraphQL-Felder und -Direktiven bereit.

Click to watch tutorial video - 07:54
Das GraphQL-Schema wird mit Feldern und Direktiven erweitert, die Funktionalitäten der Programmiersprache PHP bereitstellen.
Funktionsfelder
Funktionsfelder sind globale Felder und werden daher jedem einzelnen Typ im GraphQL-Schema hinzugefügt: in QueryRoot, aber auch in Post, User usw.
Funktionsfelder sind nützlich, um Daten nach dem Abruf zu manipulieren. Sie ermöglichen es dir, einen Feldwert auf jede gewünschte Weise zu transformieren, und bieten leistungsstarke Möglichkeiten zum Importieren und Exportieren von Daten.
Obwohl wir beispielsweise ein Feld Post.hasComments haben, benötigen wir möglicherweise den entgegengesetzten Wert. Anstatt ein neues Feld Post.notHasComments zu erstellen (was eine Änderung des PHP-Codes erfordern würde), können wir die Funktion Field to Input verwenden, um den Wert von hasComments in ein not-Feld einzuspeisen und so den neuen Wert vollständig innerhalb der GraphQL-Query zu berechnen:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Funktionsdirektiven
Das GraphQL-Schema wird mit Direktiven erweitert, die Funktionalitäten bereitstellen, die häufig in Programmiersprachen (wie PHP) zu finden sind.
Direktiven sind nützlich, um Daten nach dem Abruf zu manipulieren. Sie ermöglichen es dir, einen Feldwert auf jede gewünschte Weise zu transformieren, und bieten leistungsstarke Möglichkeiten zum Importieren und Exportieren von Daten.
Diese Query zum Beispiel:
query {
posts {
title @strUpperCase
}
}...erzeugt diese Antwort:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Hilfsfelder
Das GraphQL-Schema wird mit Feldern erweitert, die häufig benötigte Hilfsfunktionen bereitstellen.
Hilfsfelder sind globale Felder und werden daher jedem einzelnen Typ im GraphQL-Schema hinzugefügt: in QueryRoot, aber auch in Post, User usw.
In dieser Query rufen wir die IDs der Nutzer der Website ab und führen eine neue GraphQL-Query aus, bei der ihre ID als Parameter übergeben wird:
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
}
}
}Umgebungsfelder
Das GraphQL-Schema wird mit dem globalen Feld _env erweitert, das es ermöglicht, einen Wert aus einer Umgebungsvariablen oder einer PHP-Konstante abzurufen (meistens in wp-config.php definiert, kann aber auch anderswo definiert sein).
Diese Query ruft die Umgebungskonstante GITHUB_ACCESS_TOKEN ab, die wir möglicherweise eingerichtet haben, um auf ein privates Repository auf GitHub zuzugreifen:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}E-Mail-Versand
Das GraphQL-Schema wird mit der globalen Mutation _sendEmail erweitert.
Die Mutation _sendEmail sendet E-Mails durch Ausführen der WordPress-Funktion wp_mail. Dadurch wird die in WordPress definierte Konfiguration für den E-Mail-Versand verwendet (z. B. der zu verwendende SMTP-Anbieter).
Die E-Mail kann mit dem Inhaltstyp "text" oder "HTML" gesendet werden, abhängig vom Wert des Inputs messageAs (der ein "oneof"-InputObject ist, sodass nur eine seiner Eigenschaften angegeben werden kann).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}