Blog

⭐️ Veröffentlicht v2.4 mit Application Passwords Unterstützung, Kompatibilität mit WordPress Multisite und Mutations für Seiten

Leonardo Losoviz
Von Leonardo Losoviz ·

Gato GraphQL v2.4 wurde mit verschiedenen Verbesserungen und Fehlerbehebungen veröffentlicht.

Unterstützung für Application Passwords

Es ist jetzt möglich, WordPress Application Passwords zu verwenden, um eine authentifizierte Anfrage an den GraphQL-Endpunkt zu senden.

Zum Beispiel können wir das Application Password beim Ausführen des curl-Befehls gegen den GraphQL-Server übergeben, wobei die Werte USERNAME und PASSWORD ersetzt werden:

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

Bei der Verwendung von Gato GraphQL PRO können wir dank des neu hinzugefügten Felds _strBase64Encode GraphQL verwenden, um authentifizierte HTTP-Anfragen gegen eine andere WordPress-Site auszuführen.

Die folgende query erhält den Benutzernamen und das Application Password (sowie den Endpunkt, zu dem eine Verbindung hergestellt werden soll), erstellt den erforderlichen Authentifizierungs-Header (vom Typ "Basic base64encoded(username:password)") und sendet eine HTTP-Anfrage gegen den GraphQL-Server, wobei die auszuführende GraphQL-query übergeben wird:

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

Kompatibilität mit WordPress Multisite

Mehrere Probleme wurden behoben, um Gato GraphQL mit einem WordPress Multisite-Netzwerk kompatibel zu machen.

Es ist jetzt möglich, eine einzelne Lizenz von Gato GraphQL PRO zu aktivieren, um das gesamte Multisite zu betreiben.

Schau dir das Demo-Video Translating pages on a Multilingual site based on WordPress Multisite an, in dem Gato GraphQL dabei hilft, alle Seiten einer mehrsprachigen Site zu übersetzen, die auf einem WordPress Multisite-Netzwerk basiert:

Seiten-Mutations zum GraphQL-Schema hinzugefügt

Die folgenden Mutations wurden dem GraphQL-Schema hinzugefügt:

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

Zum Beispiel kannst du jetzt diese GraphQL-query ausführen, um eine Seite zu ändern:

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

Felder zum Abrufen der Seiten des eingeloggten Benutzers hinzugefügt

v2.4 fügt auch Felder hinzu, um die Seiten des eingeloggten Benutzers abzurufen.

Die bereits vorhandenen Felder Root.page, Root.pages und Root.pageCount rufen Seiten für beliebige Benutzer ab, jedoch nur öffentliche (d.h. solche mit dem Status "publish").

Ab dieser Version können wir öffentliche oder private Seiten des eingeloggten Benutzers abrufen (d.h. mit Status "publish", "pending", "draft" oder "trash"), indem wir diese neuen Felder verwenden:

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

Felder zum Abrufen der Locale und Sprache der Site hinzugefügt

Die folgenden Felder wurden dem GraphQL-Schema hinzugefügt:

  • Root.siteLocale
  • Root.siteLanguage

Zum Beispiel könnte die Ausführung der folgenden query:

{
  siteLocale
  siteLanguage
}

...folgendes produzieren:

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

Diese Felder werden über das neue "Site"-Modul bereitgestellt. Wenn du dieses Modul deaktivierst, werden die Felder aus dem GraphQL-Schema entfernt.

Verbesserungen und Fehlerbehebungen

  • Installation eines "internen" privaten Custom Endpoints (#2684)
  • Dokumentation für das neue PRO-Feld _strBase64Encode hinzugefügt (#2673)
  • Erweiterungen mit der Extensions Reference auf gatographql.com verknüpft (#2675)
  • YouTube-Kanal-Link zur About-Seite hinzugefügt (#2676)
  • Vordefinierte persisted queries hinzugefügt:
    • [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)
  • Erweiterungen hervorgehoben und Link zum Besuch der Website aktiviert (#2674)
  • Der GraphiQL-Client (für LocalWP) verwendet jetzt die Site-URL als Endpunkt (#2686)
  • Interner Serverfehler beim Übergeben eines Strings, wenn ein Integer erwartet wird (v2.4.1)

Abonniere unseren Newsletter

Bleib über alle Updates zu Gato GraphQL auf dem Laufenden.