На этой странице
Что можно делать с WPML GraphQL?
Запрос информации о языке и переводах
Запрос конкретных записей на разных языках
Запрос данных из установленных языков
На этой странице
Что можно делать с WPML GraphQL?
Запрос информации о языке и переводах
Запрос конкретных записей на разных языках
Запрос данных из установленных языков
Для начала установите и активируйте следующие плагины:
Чтобы включить многоязычные поля из плагина ACF в схему WPGraphQL, также установите:
WPML GraphQL интегрируется с WPGraphQL, позволяя запрашивать многоязычный контент, созданный с помощью WPML.
В разделе GraphQL → GraphQL IDE Вы можете использовать Query Composer, чтобы:
Например, как показано на изображении ниже, вы можете легко получить список всех записей на вашем сайте с их языковыми кодами, slug, URI и сведениями о переводах.
Ниже мы используем многоязычный тестовый сайт, чтобы показать, как использовать WPML GraphQL для запроса контента и его переводов.
С помощью WPML GraphQL вы можете использовать поля language и translation в своих запросах:
language позволяет получать такие сведения, как код языка, URL флага страны, родное название, переведённое название и URL домашней страницы для типов записей, таксономий, меню, элементов меню и комментариев.languageCode получает код языка для записей, терминов таксономии, меню, элементов меню и комментариев без дополнительных языковых сведений.translations получает переводы для типов записей и терминов таксономии.При запросе комментариев поля language и languageCode соответствуют языку записи, к которой они относятся.
Вот пример запроса, который получает записи вместе со связанными сведениями, включая slug записи, URI, код языка, категории и существующие переводы:
query Posts{
posts(where: {language: "en"}) {
nodes {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
translations {
slug
uri
language {
code
}
categories {
nodes {
name
}
}
}
}
}
}
Выполнение этого запроса возвращает информацию о языке и переводах для каждой записи вместе со связанными элементами, такими как категории. Связи автоматически следуют языку элемента верхнего уровня (в данном случае записей):
{
"data": {
"posts": {
"nodes": [
{
"slug": "bye-world",
"uri": "/2023/05/18/bye-world/",
"language": {
"code": "en"
},
"categories": {
"nodes": [
{
"name": "End of the day"
},
{
"name": "Greetings"
}
]
},
"translations": [
{
"slug": "adios-mundo",
"uri": "/es/2023/05/18/adios-mundo/",
"language": {
"code": "es"
},
"categories": {
"nodes": [
{
"name": "Fin del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "tchau-mundo",
"uri": "/pt-pt/2023/05/18/tchau-mundo/",
"language": {
"code": "pt-pt"
},
"categories": {
"nodes": [
{
"name": "Fim do dia"
},
{
"name": "Saudações"
}
]
}
}
]
},
{
"slug": "hello-world",
"uri": "/2018/07/05/hello-world/",
"language": {
"code": "en"
},
"categories": {
"nodes": [
{
"name": "Greetings"
},
{
"name": "Start of the day"
}
]
},
"translations": [
{
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/",
"language": {
"code": "es"
},
"categories": {
"nodes": [
{
"name": "Inicio del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "ola-mundo",
"uri": "/pt-pt/2018/07/05/ola-mundo/",
"language": {
"code": "pt-pt"
},
"categories": {
"nodes": [
{
"name": "Começo do dia"
},
{
"name": "Saudações"
}
]
}
}
]
}
]
}
}
}
WPML GraphQL позволяет использовать фильтр language для:
WPML GraphQL поддерживает связи, поэтому при фильтрации элемента верхнего уровня, такого как запись, по языку все связанные элементы, такие как категории и метки, автоматически будут следовать тому же языку. Это делает ваши запросы последовательными и точными.
Вот пример запроса, который получает записи на испанском языке, включая их slug, URI и связанные категории:
query PostsES{
posts(where: {language: "es"}) {
nodes {
slug
uri
categories {
nodes {
name
}
}
}
}
}
Вот что выдает запрос:
{
"data": {
"posts": {
"nodes": [
{
"slug": "adios-mundo",
"uri": "/es/2023/05/18/adios-mundo/",
"categories": {
"nodes": [
{
"name": "Fin del día"
},
{
"name": "Saludos"
}
]
}
},
{
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/",
"categories": {
"nodes": [
{
"name": "Inicio del día"
},
{
"name": "Saludos"
}
]
}
}
]
}
}
}
С помощью WPMLGraphQL вы также можете запрашивать отдельные записи на любом языке по их ID записи или slug.
Например, если у вас есть запись с заголовком ¡Hola mundo! (испанский перевод Hello world!) со slug hola-mundo и ID записи 2, вы можете использовать следующие запросы для получения записи:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title
slug
uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title
slug
uri
}
}
Оба запроса правильно вернут данные записи, включая заголовок, slug и URI, для записи ¡Hola mundo!:
{
"data": {
"post": {
"title": "¡Hola mundo!",
"slug": "hola-mundo",
"uri": "/es/2018/07/05/hola-mundo/"
}
}
}
WPML GraphQL предоставляет два запроса для доступа к данным о языках, установленных на вашем сайте:
Эти запросы могут быть полезны, если вы хотите создать такие функции, как переключатель языков.
Например, чтобы получить данные по всем установленным языкам, Вы можете выполнить следующий запрос:
query Languages {
languages {
code
country_flag_url
default_locale
native_name
translated_name
url
}
}
Запрос, приведенный выше, дает следующий результат:
{
"data": {
"languages": [
{
"code": "en",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/en.svg",
"default_locale": "en_US",
"native_name": "English",
"translated_name": "English",
"url": "http://site.com"
},
{
"code": "es",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/es.svg",
"default_locale": "es_ES",
"native_name": "Español",
"translated_name": "Spanish",
"url": "http://site.com/es/"
},
{
"code": "it",
"country_flag_url": "http://site.com/wp-content/plugins/sitepress-multilingual-cms-release/res/flags/it.svg",
"default_locale": "it_IT",
"native_name": "Italiano",
"translated_name": "Italian",
"url": "http://site.com/it/"
}
]
}
}
Если вы используете WPGraphQL с плагином ACF, дополнения WPML GraphQL и ACFML (ACF Multilingual) расширяют эту функциональность. Это позволяет запрашивать данные пользовательских полей на разных языках.
WPGraphQL с расширением ACF предоставляет страницы параметров ACF в качестве корневых объектов. Вместе дополнения WPML GraphQL и ACFML добавляют параметр языка к запросам страниц параметров, ожидая код языка, соответствующий одному из активных языков на вашем сайте (например, «de», «pt-pt»). Это позволяет запрашивать данные на конкретном языке:
query NewQuery {
myOptionPage(language: "de") {
addressFieldGroup {
addressTitle
repeaterAddressDetails {
addressDetails
}
}
}
}
Для использования WPML GraphQL вам необходим план WPML Multilingual CMS или WPML Multilingual Agency. Оба плана предоставляют доступ к плагину WPML и широкому спектру дополнительных расширений, включённых без дополнительной платы.
Узнайте, какой план лучше всего подходит для вашего сайта.
Если у вас возникли проблемы с использованием WPML GraphQL, посетите нашу страницу Известные проблемы и решения для получения советов по устранению неполадок.
Вам все еще нужна помощь? Отправьте билет в службу поддержки.