Pular para o conteúdo Pular para a barra lateral

Home » Documentação do WPML » Projetos relacionados » WPML GraphQL – Adicione funcionalidade multilíngue ao esquema WPGraphQL

WPML GraphQL – Adicione funcionalidade multilíngue ao esquema WPGraphQL

O WPML GraphQL permite consultar, filtrar e recuperar conteúdo específico do idioma e traduções do esquema WPGraphQL.

Principais recursos

Filtre conteúdo por idioma, incluindo posts, taxonomias, comentários, menus e itens de menu

Estenda o WPGraphQL com campos de idioma para recuperar dados específicos do plugin WPML

Consultar dados em todos os idiomas instalados ou focar em idiomas específicos

Plugins necessários

Para começar, instale e ative os seguintes plugins:

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

Para incluir campos multilíngues do plugin ACF no esquema WPGraphQL, instale também:

O que você pode fazer com o WPML GraphQL?

O WPML GraphQL integra-se ao WPGraphQL para permitir que você consulte conteúdo multilíngue criado com o WPML.

De GraphQL → GraphQL IDE, você pode usar o Query Composer para:

  • Obtenha informações de idioma para qualquer conteúdo que você consultar
  • Acesse traduções para posts, taxonomias e comentários
  • Filtrar suas consultas por idioma
  • Consulte posts específicos em vários idiomas por seu ID ou Slug

Por exemplo, como mostra a imagem abaixo, você pode facilmente obter uma lista de todos os posts em seu site, com seus códigos de idioma, Slugs, URIs e detalhes de suas traduções.

Usando os campos de idioma no Query Composer para recuperar posts em todos os idiomas

Abaixo, usaremos um site de teste multilíngue para mostrar como usar o WPML GraphQL para consultar conteúdo e suas traduções.

Consultando informações de idioma e tradução

Com o WPML GraphQL, você pode usar os campos language e translation em suas consultas:

  • O campo language permite recuperar detalhes como o código do idioma, URL da bandeira do país, nome nativo, nome traduzido e URL da página inicial para tipos de post, taxonomias, menus, itens de menu e comentários.
  • O campo languageCode obtém o código do idioma para posts, termos de taxonomia, menus, itens de menu e comentários sem detalhes adicionais de idioma.
  • O campo translations recupera traduções para tipos de post e termos de taxonomia.

Ao consultar comentários, os campos language e languageCode correspondem ao idioma do post ao qual pertencem.

Aqui está um exemplo de uma consulta que recupera posts junto com seus detalhes associados, incluindo o Slug do post, URI, código do idioma, categorias e quaisquer traduções existentes:

query Posts{
  posts(where: {language: "en"}) {
  nodes {
  slug
  uri
  language {
  code
  }
  categories {
  nodes {
  name
  }
  }
  translations {
  slug
  uri
  language {
  code
  }
  categories {
  nodes {
  name
  }
  }
  }
  }
  }
}

A execução desta consulta retorna informações de idioma e tradução para cada post, junto com itens conectados, como categorias. As conexões seguem automaticamente o idioma do item de nível superior (posts, neste caso):

{
  "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"
  }
  ]
  }
  }
  ]
  }
  ]
  }
  }
}

Filtragem de idiomas

O WPML GraphQL permite que você use o filtro language para:

  • Filtrar posts, termos de taxonomia, menus, itens de menu ou comentários por um idioma específico
  • Recuperar conteúdo em um idioma específico, configurando o filtro adequadamente
  • Obter todo o conteúdo, independentemente do idioma, definindo o valor do filtro como all

O WPML GraphQL suporta conexões, portanto, quando você filtra um item de nível superior, como um post, por idioma, todos os itens relacionados, como categorias e tags, seguirão automaticamente o mesmo idioma. Isso torna suas consultas consistentes e precisas.

Aqui está um exemplo de uma consulta que recupera posts em espanhol, incluindo seus Slugs, URIs e categorias conectadas:

query PostsES{
  posts(where: {language: "es"}) {
  nodes {
  slug
  uri
  categories {
  nodes {
  name
  }
  }
  }
  }
}

Aqui está o que a consulta retorna:

{
  "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"
  }
  ]
  }
  }
  ]
  }
  }
}

Consultando posts específicos em vários idiomas

Com o WPML GraphQL, você também pode consultar posts individuais em qualquer idioma por seu ID de post ou Slug.

Por exemplo, se você tiver um post intitulado ¡Hola mundo! (a tradução em espanhol de Hello world!), com um Slug hola-mundo e um ID de post 2, você pode usar as seguintes consultas para recuperar o post:

query PostBySlug {
  post(id: "hola-mundo", idType: SLUG) {
  title
  slug
  uri
  }
}

query PostById {
  post(id: "2", idType: DATABASE_ID) {
  title
  slug
  uri
  }
}

Ambas as consultas retornarão corretamente os dados do post, incluindo o título, Slug e URI, para o post ¡Hola mundo!:

{
  "data": {
  "post": {
  "title": "¡Hola mundo!",
  "slug": "hola-mundo!",
  "uri": "/es/2018/07/05/hola-mundo/"
  }
  }
}

Consulta de dados de idiomas instalados

O WPML GraphQL fornece duas consultas para acessar dados sobre os idiomas instalados em seu site:

  • A consulta languages recupera todos os idiomas registrados juntamente com os dados relevantes para cada um
  • A consulta defaultLanguage recupera informações sobre o idioma padrão definido em seu site

Essas consultas podem ser úteis se você estiver procurando criar recursos como um seletor de idiomas.

Por exemplo, para obter dados de todos os idiomas instalados, você pode executar a seguinte consulta:

query Languages {
  languages {
  code
  country_flag_url
  default_locale
  native_name
  translated_name
  url
  }
}

A consulta acima produz o seguinte resultado:

{
  "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/"
  }
  ]
  }
}

Usando o WPML GraphQL com ACF

Se você estiver usando o WPGraphQL com o plugin ACF, os complementos WPML GraphQL e ACFML (ACF Multilingual) estendem essa funcionalidade. Isso permite que você consulte dados de campos personalizados em diferentes idiomas.

O WPGraphQL com sua extensão ACF expõe as Páginas de Opções do ACF como objetos raiz. Juntos, o WPML GraphQL e os complementos ACFML adicionam um parâmetro de idioma às consultas da Página de Opções, esperando um código de idioma correspondente a um dos idiomas ativos em seu site (por exemplo, “de”, “pt-pt”). Isso permite que você consulte os dados em um idioma específico:

query NewQuery {
  myOptionPage(language: "de") {
  addressFieldGroup {
  addressTitle
  repeaterAddressDetails {
  addressDetails
  }
  }
  }
}

Introdução ao WPML GraphQL

Para usar o WPML GraphQL, você precisa de um plano WPML Multilingual CMS ou WPML Multilingual Agency. Ambos os planos oferecem acesso ao plugin WPML e a uma ampla gama de complementos adicionais, todos incluídos sem custo extra.

Veja qual plano é melhor para o seu site.

Precisa de Ajuda?

Se você tiver problemas ao usar o WPML GraphQL, visite nossa página de Problemas Conhecidos e Soluções para dicas de solução de problemas.

Ainda precisa de ajuda? Envie um ticket de suporte.

Atualizado
maio 6, 2026