На этой странице
Что Вы можете сделать с WPML GraphQL?
Запрос языка и переводимой информации
Запрос конкретных записей на разных языках
Запрос данных из установленных языков
На этой странице
Что Вы можете сделать с WPML GraphQL?
Запрос языка и переводимой информации
Запрос конкретных записей на разных языках
Запрос данных из установленных языков
В настоящее время WPML GraphQL несовместим с WPGraphQL 2.0. Мы активно работаем над обеспечением совместимости и предоставим обновление, как только оно будет доступно.
Чтобы начать работу, установи и активируй следующие плагины:
Чтобы включить многоязычные поля из плагина ACF в схему WPGraphQL, также установите его:
WPML GraphQL Интегрируется с WPGraphQL, чтобы позволить Вам запрашивать многоязычное содержимое, созданное с помощью WPML.
В разделе GraphQL → GraphQL IDE Вы можете использовать Query Composer, чтобы:
Например, как показано на изображении ниже, Вы можете легко получить список всех записей на Вашем сайте с указанием их языковых кодов, слагов, URI и подробной информацией о переводах.
Ниже мы используем многоязычный тестовый сайт, чтобы показать Вам, как использовать WPML GraphQL для запроса содержимого и его переводов.
С помощью WPML GraphQLВы можете использовать поля языка и перевода в своих запросах:
language
позволяет Вам получить такие сведения, как код языка, URL-адрес флага страны, родное название, переведенное название и URL-адрес домашней страницы для типов записей, таксономий, меню, пунктов меню и комментариев.languageCode
содержит код языка для записей, терминов таксономии, меню, пунктов меню и комментариев без дополнительных сведений о языке.translations
содержит переводы для типов записей и терминов таксономии.Когда Вы запрашиваете комментарии, поля language
и languageCode
соответствуют языку записи, к которой они относятся.
Вот пример запроса, который извлекает записи вместе с сопутствующей информацией, включая слаг записи, 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 Позволяет использовать языковой фильтр для:
WPML GraphQL поддерживает связи, поэтому, когда Вы фильтруете элемент верхнего уровня, например, запись, по языку, все связанные с ней элементы, такие как категории и теги, будут автоматически следовать тому же языку. Это делает Ваши запросы последовательными и точными.
Вот пример запроса, который извлекает записи на испанском языке, включая их слаги, 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 Вы также можете запрашивать отдельные записи на любом языке по их идентификатору или слагу.
Например, если у Вас есть запись с заголовком ¡Hola mundo! (перевод с испанского — «Здравствуй, мир!»), со слагом hola-mundo и идентификатором записи 2, Вы можете использовать следующие запросы для получения этой записи:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title
slug
uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title
slug
uri
}
}
Оба запроса правильно вернут данные о записи, включая заголовок, слаг и 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/"
}
]
}
}
Gatsby позволяет Вам получать данные с сайта WordPress, а с помощью WPML GraphQLВы можете предоставлять многоязычное содержимое и данные, специфичные для конкретного языка, на Ваш сайт Gatsby.
Если Вы используете WP GraphQL с плагином ACF, WPML GraphQL и ACF Multilingual расширяют эту функциональность, позволяя Вам запрашивать данные пользовательских полей на разных языках.
Например, предположим, что у Вас установлен Gatsby с пакетом дополненийgatsby-source-graphql, а на Вашем сайте WordPress установлены WPML (с испанским языком в качестве дополнительного) и ACF.
Вы можете получить многоязычные записи с их названиями, языковыми кодами и пользовательскими полями ACF в Gatsby с помощью простого запроса GraphQL.
export const doQuery = graphql`
{
wordpress {
posts(where: {language: "en"}) {
nodes {
title
language {
code
}
postfields{
subtitle
}
translations {
title
language {
code
}
postfields{
subtitle
}
}
}
}
}
}
`;
Чтобы использовать WPML GraphQLВам понадобится WPML Multilingual CMS или WPML Multilingual Agency тарифный план. WPML Оба тарифных плана предоставляют доступ к плагину DeepL и широкому спектру дополнений, включенных без дополнительной оплаты.
Узнайте, какой тарифный план лучше всего подходит для Вашего сайта.
Если у Вас возникли проблемы с использованием WPML GraphQL, посетите нашу страницу Известные проблемы и решения, чтобы найти советы по устранению неполадок.
Вам все еще нужна помощь? Отправьте билет в службу поддержки.