⭐️ Application Passwords desteği, WordPress multisite uyumluluğu ve sayfalar için mutations ile v2.4 yayınlandı
Gato GraphQL v2.4, çeşitli iyileştirmeler ve hata düzeltmeleriyle yayınlandı.
Application Passwords Desteği
Artık GraphQL endpoint'ine kimliği doğrulanmış bir istek göndermek için WordPress Application Passwords kullanmak mümkün.
Örneğin, USERNAME ve PASSWORD değerlerini değiştirerek GraphQL sunucusuna karşı curl komutunu çalıştırırken application password'ü geçirebiliriz:
curl -i \
--user "USERNAME:PASSWORD" \
-X POST \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name } }"}' \
https://mysite.com/graphqlGato GraphQL PRO kullanılırken, yeni eklenen _strBase64Encode alanı sayesinde başka bir WordPress sitesine karşı kimliği doğrulanmış HTTP istekleri göndermek için GraphQL kullanabiliriz.
Aşağıdaki query, kullanıcı adını ve application password'ü (ve bağlanılacak endpoint'i) alır, gerekli kimlik doğrulama başlığını ("Basic base64encoded(username:password)" türünde) oluşturur ve çalıştırılacak GraphQL query'sini geçerek GraphQL sunucusuna bir HTTP isteği gönderir:
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
}
]
}
})
}WordPress Multisite ile Uyumluluk
Gato GraphQL'i bir WordPress Multisite ağıyla uyumlu hale getirmek için çeşitli sorunlar giderildi.
Artık tüm multisite'ı yönetmek için tek bir Gato GraphQL PRO lisansını etkinleştirmek mümkün.
Gato GraphQL'in WordPress Multisite ağına dayalı çok dilli bir sitedeki tüm sayfaların çevrilmesine yardımcı olduğu Translating pages on a Multilingual site based on WordPress Multisite demo videosunu izleyin:
GraphQL şemasına sayfa mutations'ları eklendi
GraphQL şemasına aşağıdaki mutations eklendi:
Root.createPageRoot.updatePagePage.update
Örneğin, artık bir sayfayı değiştirmek için şu GraphQL query'sini çalıştırabilirsiniz:
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
}
}
}Oturum açmış kullanıcının sayfalarını almak için alanlar eklendi
v2.4 ayrıca oturum açmış kullanıcının sayfalarını almak için alanlar ekler.
Daha önce var olan Root.page, Root.pages ve Root.pageCount alanları herhangi bir kullanıcının sayfalarını alır; ancak yalnızca herkese açık olanları (yani "publish" durumuyla olanları).
Bu sürümden itibaren, şu yeni alanları kullanarak oturum açmış kullanıcının herkese açık veya özel sayfalarını (yani "publish", "pending", "draft" veya "trash" durumuyla olanları) alabiliriz:
Root.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}Sitenin yerel ayarını ve dilini almak için alanlar eklendi
GraphQL şemasına aşağıdaki alanlar eklendi:
Root.siteLocaleRoot.siteLanguage
Örneğin, aşağıdaki query çalıştırıldığında:
{
siteLocale
siteLanguage
}...şu sonuç üretilebilir:
{
"data": {
"siteLocale": "en_US",
"siteLanguage": "en"
}
}Bu alanlar yeni "Site" modülü aracılığıyla sağlanmaktadır. Bu modülün devre dışı bırakılması, alanları GraphQL şemasından kaldıracaktır.
İyileştirmeler ve düzeltmeler
- "Internal" özel private custom endpoint kurulumu (#2684)
- Yeni PRO alanı
_strBase64Encodeiçin belge eklendi (#2673) - Uzantılar gatographql.com'daki Extensions Reference'a bağlandı (#2675)
- Hakkında sayfasına YouTube kanal bağlantısı eklendi (#2676)
- Önceden tanımlanmış persisted queries eklendi:
- Uzantılar vurgulandı ve web sitesini ziyaret etmek için bağlantı etkinleştirildi (#2674)
- GraphiQL istemcisi (LocalWP için) artık site URL'sini endpoint olarak kullanıyor (#2686)
- Int beklenirken string geçilmesinden kaynaklanan dahili sunucu hatası (v2.4.1)