⭐️ Lançada a v2.4 com suporte a Application Passwords, compatibilidade com WordPress multisite e mutations para páginas
Gato GraphQL v2.4 foi lançada com diversas melhorias e correções de bugs.
Suporte a Application Passwords
Agora é possível usar as Application Passwords do WordPress para enviar uma requisição autenticada ao endpoint GraphQL.
Por exemplo, podemos passar a application password ao executar o comando curl contra o servidor GraphQL, substituindo os valores USERNAME e PASSWORD:
curl -i \
--user "USERNAME:PASSWORD" \
-X POST \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name } }"}' \
https://mysite.com/graphqlAo usar o Gato GraphQL PRO, graças ao novo campo _strBase64Encode, podemos usar GraphQL para executar requisições HTTP autenticadas contra outro site WordPress.
A query abaixo recebe o nome de usuário e a application password (além do endpoint ao qual se conectar), cria o header de autenticação necessário (do tipo "Basic base64encoded(username:password)") e envia uma requisição HTTP contra o servidor GraphQL, passando a query GraphQL a ser executada:
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
}
]
}
})
}Compatibilidade com WordPress Multisite
Diversos problemas foram corrigidos para tornar o Gato GraphQL compatível com uma rede WordPress Multisite.
Agora é possível ativar uma única licença do Gato GraphQL PRO para operar todo o multisite.
Confira o vídeo de demonstração Translating pages on a Multilingual site based on WordPress Multisite, onde o Gato GraphQL ajuda a traduzir todas as páginas de um site multilíngue baseado em uma rede WordPress Multisite:
Adicionadas mutations para páginas no schema GraphQL
As seguintes mutations foram adicionadas ao schema GraphQL:
Root.createPageRoot.updatePagePage.update
Por exemplo, agora você pode executar esta query GraphQL para modificar uma página:
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
}
}
}Adicionados campos para buscar as páginas do usuário logado
A v2.4 também adiciona campos para recuperar as páginas do usuário logado.
Os campos já existentes Root.page, Root.pages e Root.pageCount recuperam páginas de qualquer usuário, mas apenas as públicas (ou seja, aquelas com status "publish").
A partir desta versão, podemos buscar páginas públicas ou privadas do usuário logado (ou seja, com status "publish", "pending", "draft" ou "trash"), usando estes novos campos:
Root.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}Adicionados campos para buscar a locale e o idioma do site
Os seguintes campos foram adicionados ao schema GraphQL:
Root.siteLocaleRoot.siteLanguage
Por exemplo, ao executar a seguinte query:
{
siteLocale
siteLanguage
}...pode produzir:
{
"data": {
"siteLocale": "en_US",
"siteLanguage": "en"
}
}Esses campos são fornecidos pelo novo módulo "Site". Desabilitar este módulo removerá os campos do schema GraphQL.
Melhorias e correções
- Instalação de custom endpoint privado "internal" (#2684)
- Adicionada documentação para o novo campo PRO
_strBase64Encode(#2673) - Vinculação das extensões à Extensions Reference em gatographql.com (#2675)
- Adicionado link ao canal do YouTube na página Sobre (#2676)
- Adicionadas queries persistidas predefinidas:
- Destaque de extensões e ativação do link para visitar no site (#2674)
- O cliente GraphiQL (para LocalWP) agora usa a URL do site como endpoint (#2686)
- Erro interno do servidor ao passar uma string quando um inteiro era esperado (v2.4.1)