Schema Functions
Hiển thị các chức năng từ ngôn ngữ lập trình PHP thông qua các trường và chỉ thị GraphQL.

Click to watch tutorial video - 07:54
Schema GraphQL được cung cấp các trường và chỉ thị để hiển thị các chức năng từ ngôn ngữ lập trình PHP.
Trường Hàm
Các trường hàm là các trường toàn cục, do đó chúng được thêm vào mọi kiểu trong schema GraphQL: trong QueryRoot, nhưng cũng trong Post, User, v.v.
Các trường hàm hữu ích để thao tác dữ liệu sau khi đã được truy xuất, cho phép chúng ta chuyển đổi giá trị của một trường theo bất kỳ cách nào cần thiết, và cung cấp khả năng nhập/xuất dữ liệu mạnh mẽ.
Ví dụ, trong khi chúng ta có trường Post.hasComments, chúng ta có thể cần giá trị ngược lại. Thay vì tạo một trường mới Post.notHasComments (mà sẽ cần chỉnh sửa mã PHP), chúng ta có thể sử dụng tính năng Field to Input để truyền giá trị từ hasComments vào trường not, từ đó tính toán giá trị mới hoàn toàn trong GraphQL query:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Chỉ Thị Hàm
Schema GraphQL được cung cấp các chỉ thị để hiển thị các chức năng thường gặp trong các ngôn ngữ lập trình (chẳng hạn như PHP).
Các trường chỉ thị hữu ích để thao tác dữ liệu sau khi đã được truy xuất, cho phép chúng ta chuyển đổi giá trị của một trường theo bất kỳ cách nào cần thiết, và cung cấp khả năng nhập/xuất dữ liệu mạnh mẽ.
Ví dụ, query này:
query {
posts {
title @strUpperCase
}
}...sẽ tạo ra kết quả sau:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Trường Hỗ Trợ
Schema GraphQL được thêm các trường cung cấp các chức năng hỗ trợ thường dùng.
Các trường hỗ trợ là các trường toàn cục, do đó chúng được thêm vào mọi kiểu trong schema GraphQL: trong QueryRoot, nhưng cũng trong Post, User, v.v.
Trong query này, chúng ta lấy ID của các người dùng trên trang web và thực thi một GraphQL query mới với ID của họ làm tham số:
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
}
}
}Trường Môi Trường
Schema GraphQL được cung cấp trường toàn cục _env, cho phép lấy giá trị từ một biến môi trường hoặc từ một hằng số PHP (thường được định nghĩa trong wp-config.php, nhưng cũng có thể được định nghĩa ở nơi khác).
Query này lấy hằng số môi trường GITHUB_ACCESS_TOKEN mà chúng ta có thể thiết lập để truy cập một kho lưu trữ riêng tư trên GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}Gửi Email
Schema GraphQL được cung cấp mutation toàn cục _sendEmail.
Mutation _sendEmail gửi email bằng cách thực thi hàm WordPress wp_mail. Kết quả là nó sẽ sử dụng cấu hình đã được định nghĩa để gửi email trong WordPress (chẳng hạn như nhà cung cấp SMTP được sử dụng).
Email có thể được gửi với loại nội dung "text" hoặc "HTML", tùy thuộc vào giá trị của đầu vào messageAs (đây là một InputObject kiểu "oneof", chỉ có thể cung cấp một trong các thuộc tính của nó).
mutation {
_sendEmail(
input: {
to: "target@email.com"
subject: "Email with text content"
messageAs: {
text: "Hello world!"
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
}
}