Blog

⭐️ Lançada a v2.4 com suporte a Application Passwords, compatibilidade com WordPress multisite e mutations para páginas

Leonardo Losoviz
Por Leonardo Losoviz ·

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/graphql

Ao 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.createPage
  • Root.updatePage
  • Page.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.myPage
  • Root.myPages
  • Root.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.siteLocale
  • Root.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:
    • [PRO] Translate and create all pages for a multilingual site (Multisite / Gutenberg) (#2688)
    • [PRO] Translate and create all pages for a multilingual site (Multisite / Classic editor) (#2688)
  • 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)

Assine nossa newsletter

Fique por dentro de todas as atualizações do Gato GraphQL.