Blog

⭐️ Lanzado v2.4 con soporte de Application Passwords, compatibilidad con WordPress multisite, y mutations para páginas

Leonardo Losoviz
Por Leonardo Losoviz ·

Se ha lanzado Gato GraphQL v2.4 con varias mejoras y bug fixes.

Soporte de Application Passwords

Ahora es posible usar las Application Passwords de WordPress para enviar una petición autenticada al endpoint GraphQL.

Por ejemplo, podemos pasar la application password al ejecutar el comando curl contra el servidor GraphQL, reemplazando los valores USERNAME y PASSWORD:

curl -i \
  --user "USERNAME:PASSWORD" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"query": "{ me { name } }"}' \
  https://mysite.com/graphql

Al usar Gato GraphQL PRO, gracias al recién añadido campo _strBase64Encode, podemos usar GraphQL para ejecutar peticiones HTTP autenticadas contra otro sitio WordPress.

La consulta de abajo recibe el username y la application password (y el endpoint al que conectarse), crea la cabecera de autenticación requerida (de tipo "Basic base64encoded(username:password)"), y envía una petición HTTP contra el servidor GraphQL, pasando la consulta GraphQL a ejecutar:

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
        }
      ]
    }
  })
}

Compatibilidad con WordPress Multisite

Se han arreglado varios problemas para que Gato GraphQL sea compatible con una red WordPress Multisite.

Ahora es posible activar una única licencia de Gato GraphQL PRO para operar todo el multisite.

Echa un vistazo al vídeo de la demo Traducir páginas en un sitio multilingüe basado en WordPress Multisite, donde Gato GraphQL ayuda a traducir todas las páginas en un sitio multilingüe basado en una red WordPress Multisite:

Añadidas mutations para páginas al esquema GraphQL

Se han añadido las siguientes mutations al esquema GraphQL:

  • Root.createPage
  • Root.updatePage
  • Page.update

Por ejemplo, ahora puedes ejecutar esta consulta GraphQL para modificar una 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
    }
  }
}

Añadidos campos para obtener las páginas del usuario logueado

v2.4 también añade campos para recuperar las páginas del usuario logueado.

Los campos previamente existentes Root.page, Root.pages y Root.pageCount recuperan páginas para cualquier usuario, pero solo las públicas (es decir, las que tienen estado "publish").

Desde esta versión, podemos obtener páginas públicas o privadas del usuario logueado (es decir, con estado "publish", "pending", "draft" o "trash"), usando estos nuevos campos:

  • Root.myPage
  • Root.myPages
  • Root.myPageCount
query {
  myPages(filter: { status: [draft, pending] }) {
    id
    title
    status
  }
}

Añadidos campos para obtener locale e idioma del sitio

Se han añadido los siguientes campos al esquema GraphQL:

  • Root.siteLocale
  • Root.siteLanguage

Por ejemplo, ejecutar la siguiente consulta:

{
  siteLocale
  siteLanguage
}

...podría producir:

{
  "data": {
    "siteLocale": "en_US",
    "siteLanguage": "en"
  }
}

Estos campos se proporcionan vía el nuevo módulo "Site". Deshabilitar este módulo eliminará los campos del esquema GraphQL.

Mejoras y arreglos

  • Instalar custom endpoint privado "internal" (#2684)
  • Añadida documentación para el nuevo campo PRO _strBase64Encode (#2673)
  • Enlazar las extensiones a la Extensions Reference en gatographql.com (#2675)
  • Añadido enlace al canal de YouTube en la página About (#2676)
  • Añadidas persisted queries predefinidas:
    • [PRO] Traducir y crear todas las páginas para un sitio multilingüe (Multisite / Gutenberg) (#2688)
    • [PRO] Traducir y crear todas las páginas para un sitio multilingüe (Multisite / Editor clásico) (#2688)
  • Resaltar extensiones y habilitar enlace a visitar en el sitio web (#2674)
  • El cliente GraphiQL (para LocalWP) ahora usa la URL del sitio como endpoint (#2686)
  • Error interno de servidor al pasar string cuando se esperaba int (v2.4.1)

Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.