Schema Functions
Mengekspos fungsionalitas dari bahasa pemrograman PHP melalui field dan directive GraphQL.

Click to watch tutorial video - 07:54
Skema GraphQL dilengkapi dengan field dan directive yang mengekspos fungsionalitas dari bahasa pemrograman PHP.
Field Fungsi
Field fungsi adalah field global, sehingga ditambahkan ke setiap tipe dalam skema GraphQL: di QueryRoot, tetapi juga di Post, User, dll.
Field fungsi berguna untuk memanipulasi data setelah diambil, memungkinkan kita untuk mengubah nilai field sesuai kebutuhan, dan memberikan kemampuan impor/ekspor data yang powerful.
Misalnya, meskipun kita memiliki field Post.hasComments, kita mungkin memerlukan nilai kebalikannya. Alih-alih membuat field baru Post.notHasComments (yang mengharuskan kita mengedit kode PHP), kita dapat menggunakan fitur Field to Input untuk memasukkan nilai dari hasComments ke field not, sehingga menghitung nilai baru selalu di dalam query GraphQL:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Directive Fungsi
Skema GraphQL dilengkapi dengan directive yang mengekspos fungsionalitas yang umum ditemukan dalam bahasa pemrograman (seperti PHP).
Field directive berguna untuk memanipulasi data setelah diambil, memungkinkan kita untuk mengubah nilai field sesuai kebutuhan, dan memberikan kemampuan impor/ekspor data yang powerful.
Misalnya, query ini:
query {
posts {
title @strUpperCase
}
}...akan menghasilkan respons ini:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Field Helper
Skema GraphQL ditambahkan field yang menyediakan fungsionalitas helper yang umum digunakan.
Field helper adalah field global, sehingga ditambahkan ke setiap tipe dalam skema GraphQL: di QueryRoot, tetapi juga di Post, User, dll.
Dalam query ini, kita mengambil ID pengguna di website dan mengeksekusi query GraphQL baru dengan meneruskan ID mereka sebagai parameter:
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
}
}
}Field Environment
Skema GraphQL dilengkapi dengan field global _env, yang memungkinkan untuk mendapatkan nilai dari variabel environment, atau dari konstanta PHP (paling umum didefinisikan di wp-config.php, tetapi juga dapat didefinisikan di tempat lain).
Query ini mengambil konstanta environment GITHUB_ACCESS_TOKEN yang mungkin kita siapkan untuk mengakses repositori privat di GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}Pengirim Email
Skema GraphQL dilengkapi dengan mutation global _sendEmail.
Mutation _sendEmail mengirim email dengan mengeksekusi fungsi WordPress wp_mail. Sebagai hasilnya, ini akan menggunakan konfigurasi yang didefinisikan untuk pengiriman email di WordPress (seperti penyedia SMTP yang digunakan).
Email dapat dikirim dengan tipe konten "text" atau "HTML", tergantung pada nilai input messageAs (yang merupakan InputObject "oneof", sehingga hanya satu propertinya yang dapat disediakan).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}