⭐️ Выпуск v2.4 с поддержкой Application Passwords, совместимостью с WordPress Multisite и mutations для страниц
Выпущен 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.createPageRoot.updatePagePage.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.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}Добавлены поля для получения локали и языка сайта
В схему GraphQL добавлены следующие поля:
Root.siteLocaleRoot.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:
- Выделение расширений и включение ссылки для посещения на веб-сайте (#2674)
- Клиент GraphiQL (для LocalWP) теперь использует URL сайта в качестве endpoint (#2686)
- Внутренняя ошибка сервера при передаче строки вместо ожидаемого int (v2.4.1)