Блог

⭐️ Выпуск v2.4 с поддержкой Application Passwords, совместимостью с WordPress Multisite и mutations для страниц

Leonardo Losoviz
Автор: Leonardo Losoviz ·

Выпущен Gato GraphQL v2.4 с рядом улучшений и исправлений ошибок.

Поддержка Application Passwords

Теперь можно использовать Application Passwords WordPress для отправки аутентифицированных запросов к GraphQL endpoint.

Например, можно передать application password при выполнении команды curl против GraphQL сервера, заменив значения USERNAME и PASSWORD:

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

При использовании Gato GraphQL PRO, благодаря новому полю _strBase64Encode, можно использовать GraphQL для выполнения аутентифицированных HTTP-запросов к другому сайту WordPress.

Приведённый ниже запрос получает имя пользователя и application password (и endpoint для подключения), создаёт необходимый заголовок аутентификации (типа «Basic base64encoded(username:password)») и отправляет HTTP-запрос к GraphQL серверу, передавая GraphQL запрос для выполнения:

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

Совместимость с WordPress Multisite

Был исправлен ряд проблем, обеспечивающих совместимость Gato GraphQL с сетью WordPress Multisite.

Теперь можно активировать одну лицензию Gato GraphQL PRO для работы со всей сетью multisite.

Посмотрите демонстрационное видео Перевод страниц на многоязычном сайте на основе WordPress Multisite, где Gato GraphQL помогает переводить все страницы многоязычного сайта, основанного на сети WordPress Multisite:

Добавлены mutations для страниц в схему GraphQL

В схему GraphQL добавлены следующие mutations:

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

Например, теперь можно выполнить следующий GraphQL запрос для изменения страницы:

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

Добавлены поля для получения страниц авторизованного пользователя

v2.4 также добавляет поля для получения страниц авторизованного пользователя.

Ранее существующие поля Root.page, Root.pages и Root.pageCount получают страницы для любого пользователя, но только публичные (то есть со статусом "publish").

Начиная с этой версии, можно получать публичные или приватные страницы авторизованного пользователя (то есть со статусом "publish", "pending", "draft" или "trash"), используя новые поля:

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

Добавлены поля для получения локали и языка сайта

В схему GraphQL добавлены следующие поля:

  • Root.siteLocale
  • Root.siteLanguage

Например, выполнение следующего запроса:

{
  siteLocale
  siteLanguage
}

...может вернуть:

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

Эти поля предоставляются через новый модуль «Site». Отключение этого модуля удалит поля из схемы GraphQL.

Улучшения и исправления

  • Установка «внутреннего» приватного custom endpoint (#2684)
  • Добавлена документация для нового PRO поля _strBase64Encode (#2673)
  • Привязка расширений к Extensions Reference на gatographql.com (#2675)
  • Добавлена ссылка на YouTube-канал на странице About (#2676)
  • Добавлены предопределённые persisted queries:
    • [PRO] Перевести и создать все страницы для многоязычного сайта (Multisite / Gutenberg) (#2688)
    • [PRO] Перевести и создать все страницы для многоязычного сайта (Multisite / Classic editor) (#2688)
  • Выделение расширений и включение ссылки для посещения на веб-сайте (#2674)
  • Клиент GraphiQL (для LocalWP) теперь использует URL сайта в качестве endpoint (#2686)
  • Внутренняя ошибка сервера при передаче строки вместо ожидаемого int (v2.4.1)

Подпишитесь на нашу рассылку

Будьте в курсе всех обновлений Gato GraphQL.