⭐️ Phát hành v2.4 với hỗ trợ Application Passwords, tương thích với WordPress multisite và mutations cho trang
Gato GraphQL v2.4 đã được phát hành với nhiều cải tiến và sửa lỗi.
Hỗ trợ Application Passwords
Bây giờ có thể sử dụng Application Passwords của WordPress để gửi yêu cầu xác thực tới endpoint GraphQL.
Ví dụ, chúng ta có thể truyền application password khi thực thi lệnh curl đến máy chủ GraphQL, thay thế các giá trị USERNAME và PASSWORD:
curl -i \
--user "USERNAME:PASSWORD" \
-X POST \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name } }"}' \
https://mysite.com/graphqlKhi sử dụng Gato GraphQL PRO, nhờ field _strBase64Encode mới được thêm vào, chúng ta có thể sử dụng GraphQL để thực thi các yêu cầu HTTP xác thực đến một trang WordPress khác.
Query bên dưới nhận tên người dùng và application password (cùng với endpoint để kết nối), tạo header xác thực cần thiết (kiểu "Basic base64encoded(username:password)"), và gửi yêu cầu HTTP đến máy chủ GraphQL, truyền GraphQL query cần thực thi:
query GetDataFromExternalWPSite(
$username: String!
$appPassword: String!
$endpoint: URL!
) {
loginCredentials: _sprintf(
string: "%s:%s",
values: [$username, $appPassword]
)
@remove
base64EncodedLoginCredentials: _strBase64Encode(
string: $__loginCredentials
)
@remove
loginCredentialsHeaderValue: _sprintf(
string: "Basic %s",
values: [$__base64EncodedLoginCredentials]
)
@remove
externalHTTPRequestWithUserPassword: _sendGraphQLHTTPRequest(input:{
endpoint: $endpoint,
query: """
{
me {
name
}
}
""",
options: {
headers: [
{
name: "Authorization",
value: $__loginCredentialsHeaderValue
}
]
}
})
}Tương thích với WordPress Multisite
Nhiều vấn đề đã được khắc phục để Gato GraphQL tương thích với mạng WordPress Multisite.
Bây giờ có thể kích hoạt một giấy phép duy nhất của Gato GraphQL PRO để vận hành toàn bộ multisite.
Xem video demo Translating pages on a Multilingual site based on WordPress Multisite, nơi Gato GraphQL giúp dịch tất cả các trang trên một trang web đa ngôn ngữ dựa trên mạng WordPress Multisite:
Thêm page mutations vào schema GraphQL
Các mutations sau đây đã được thêm vào schema GraphQL:
Root.createPageRoot.updatePagePage.update
Ví dụ, bây giờ bạn có thể thực thi GraphQL query này để chỉnh sửa một trang:
mutation UpdatePage {
updatePage(input: {
id: 2
title: "Updated title"
contentAs: { html: "Updated content" },
status: pending
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
page {
id
rawTitle
rawContent
status
}
}
}Thêm fields để lấy các trang của người dùng đang đăng nhập
v2.4 cũng thêm các fields để truy xuất các trang của người dùng đang đăng nhập.
Các fields đã tồn tại trước đó Root.page, Root.pages và Root.pageCount truy xuất các trang cho bất kỳ người dùng nào, nhưng chỉ những trang công khai (tức là những trang có trạng thái "publish").
Từ phiên bản này trở đi, chúng ta có thể lấy các trang công khai hoặc riêng tư từ người dùng đang đăng nhập (tức là với trạng thái "publish", "pending", "draft" hoặc "trash"), sử dụng các fields mới sau:
Root.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}Thêm fields để lấy locale và ngôn ngữ của trang web
Các fields sau đây đã được thêm vào schema GraphQL:
Root.siteLocaleRoot.siteLanguage
Ví dụ, thực thi query sau:
{
siteLocale
siteLanguage
}...có thể tạo ra:
{
"data": {
"siteLocale": "en_US",
"siteLanguage": "en"
}
}Các fields này được cung cấp thông qua module "Site" mới. Tắt module này sẽ xóa các fields khỏi schema GraphQL.
Cải tiến và sửa lỗi
- Cài đặt custom endpoint riêng tư "internal" (#2684)
- Thêm tài liệu cho field PRO mới
_strBase64Encode(#2673) - Liên kết các extension đến Extensions Reference trên gatographql.com (#2675)
- Thêm liên kết kênh YouTube vào trang Giới thiệu (#2676)
- Thêm các persisted queries được xác định trước:
- Nổi bật các extension và bật liên kết để truy cập trang web (#2674)
- Client GraphiQL (dành cho LocalWP) hiện sử dụng URL của trang web làm endpoint (#2686)
- Lỗi máy chủ nội bộ khi truyền chuỗi khi dự kiến là số nguyên (v2.4.1)