Blog

⭐️ Sortie v2.4 avec support des Application Passwords, compatibilité avec WordPress multisite, et mutations pour les pages

Leonardo Losoviz
Par Leonardo Losoviz ·

Gato GraphQL v2.4 a été publié avec plusieurs améliorations et corrections de bugs.

Support des Application Passwords

Il est désormais possible d'utiliser les Application Passwords de WordPress pour envoyer une requête authentifiée à l'endpoint GraphQL.

Par exemple, nous pouvons passer l'application password lors de l'exécution de la commande curl contre le serveur GraphQL, en remplaçant les valeurs USERNAME et PASSWORD :

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

Lors de l'utilisation de Gato GraphQL PRO, grâce au nouveau champ _strBase64Encode, nous pouvons utiliser GraphQL pour exécuter des requêtes HTTP authentifiées vers un autre site WordPress.

La requête ci-dessous reçoit le nom d'utilisateur et l'application password (ainsi que l'endpoint auquel se connecter), crée l'en-tête d'authentification requis (de type « Basic base64encoded(username:password) »), et envoie une requête HTTP contre le serveur GraphQL, en passant la requête GraphQL à exécuter :

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

Compatibilité avec WordPress Multisite

Plusieurs problèmes ont été corrigés pour rendre Gato GraphQL compatible avec un réseau WordPress Multisite.

Il est désormais possible d'activer une seule licence de Gato GraphQL PRO pour exploiter l'ensemble du multisite.

Regardez la vidéo de démonstration Translating pages on a Multilingual site based on WordPress Multisite, où Gato GraphQL aide à traduire toutes les pages d'un site multilingue basé sur un réseau WordPress Multisite :

Ajout de mutations pour les pages dans le schéma GraphQL

Les mutations suivantes ont été ajoutées au schéma GraphQL :

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

Par exemple, vous pouvez maintenant exécuter cette requête GraphQL pour modifier une page :

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

Ajout de champs pour récupérer les pages de l'utilisateur connecté

v2.4 ajoute également des champs pour récupérer les pages de l'utilisateur connecté.

Les champs précédemment existants Root.page, Root.pages et Root.pageCount récupèrent les pages pour n'importe quel utilisateur, mais uniquement les pages publiques (c'est-à-dire celles avec le statut "publish").

À partir de cette version, nous pouvons récupérer les pages publiques ou privées de l'utilisateur connecté (c'est-à-dire avec le statut "publish", "pending", "draft" ou "trash"), en utilisant ces nouveaux champs :

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

Ajout de champs pour récupérer la locale et la langue du site

Les champs suivants ont été ajoutés au schéma GraphQL :

  • Root.siteLocale
  • Root.siteLanguage

Par exemple, l'exécution de la requête suivante :

{
  siteLocale
  siteLanguage
}

...pourrait produire :

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

Ces champs sont fournis via le nouveau module « Site ». Désactiver ce module supprimera les champs du schéma GraphQL.

Améliorations et corrections

  • Installation d'un custom endpoint privé « internal » (#2684)
  • Ajout de la documentation pour le nouveau champ PRO _strBase64Encode (#2673)
  • Liaison des extensions à la Extensions Reference sur gatographql.com (#2675)
  • Ajout du lien vers la chaîne YouTube dans la page À propos (#2676)
  • Ajout de persisted queries prédéfinies :
    • [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)
  • Mise en évidence des extensions et activation du lien pour visiter le site web (#2674)
  • Le client GraphiQL (pour LocalWP) utilise désormais l'URL du site comme endpoint (#2686)
  • Erreur interne du serveur lors du passage d'une chaîne quand un entier est attendu (v2.4.1)

Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.