Schema Functions
Exponha funcionalidades da linguagem de programação PHP via campos e diretivas GraphQL.

Click to watch tutorial video - 07:54
O schema GraphQL é provido com campos e diretivas que expõem funcionalidades da linguagem de programação PHP.
Campos de Função
Campos de função são campos globais, portanto são adicionados a cada tipo no schema GraphQL: em QueryRoot, mas também em Post, User, etc.
Campos de função são úteis para manipular os dados após serem recuperados, permitindo transformar o valor de um campo da forma que for necessária, e concedendo poderosas capacidades de importação/exportação de dados.
Por exemplo, embora tenhamos um campo Post.hasComments, podemos precisar do valor oposto. Em vez de criar um novo campo Post.notHasComments (para o qual precisaríamos editar código PHP), podemos usar o recurso Field to Input para passar o valor de hasComments para um campo not, calculando assim o novo valor diretamente dentro da query GraphQL:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Diretivas de Função
O schema GraphQL é provido com diretivas que expõem funcionalidades comumente encontradas em linguagens de programação (como PHP).
Campos de diretiva são úteis para manipular os dados após serem recuperados, permitindo transformar o valor de um campo da forma que for necessária, e concedendo poderosas capacidades de importação/exportação de dados.
Por exemplo, esta query:
query {
posts {
title @strUpperCase
}
}...produzirá esta resposta:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Campos Auxiliares
O schema GraphQL recebe campos que fornecem funcionalidades auxiliares de uso comum.
Campos auxiliares são campos globais, portanto são adicionados a cada tipo no schema GraphQL: em QueryRoot, mas também em Post, User, etc.
Nesta query, recuperamos os IDs dos usuários do site e executamos uma nova query GraphQL passando seus IDs como parâmetro:
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
}
}
}Campos de Ambiente
O schema GraphQL é provido com o campo global _env, que permite obter um valor de uma variável de ambiente ou de uma constante PHP (mais comumente definida em wp-config.php, mas que também pode ser definida em outro lugar).
Esta query recupera a constante de ambiente GITHUB_ACCESS_TOKEN que podemos configurar para acessar um repositório privado no GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}Envio de E-mail
O schema GraphQL é provido com a mutation global _sendEmail.
A mutation _sendEmail envia e-mails executando a função WordPress wp_mail. Como resultado, utilizará a configuração definida para envio de e-mails no WordPress (como o provedor SMTP a ser usado).
O e-mail pode ser enviado com os tipos de conteúdo "text" ou "HTML", dependendo do valor do input messageAs (que é um InputObject "oneof", de modo que apenas uma de suas propriedades pode ser fornecida).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}