Pular a navegação

Home » Documentação do WPML » Projetos relacionados » WPML GraphQL – Adicionar Funcionalidade Multilíngue ao Esquema WPGraphQL

WPML GraphQL – Adicionar Funcionalidade Multilíngue ao Esquema WPGraphQL

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

Principais recursos

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

Estender 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

Nesta página:

Plugins necessários

Para começar, instale e ative os seguintes plug-ins:

  • 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 WPML GraphQL?

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

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

  • Obter informações de idioma para qualquer conteúdo que você consultar
  • Acessar traduções para postagens, taxonomias e comentários
  • Filtrar suas consultas por idioma
  • Consultar postagens específicas em diferentes idiomas por seu ID ou slug

Por exemplo, como mostra a imagem abaixo, você pode facilmente obter uma lista de todas as postagens em seu site, completa 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 WPML GraphQL para consultar conteúdo e suas traduções.

Consulta de informações sobre idiomas e traduções

Com WPML GraphQL, você pode usar os campos idioma e tradução 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 postagens, taxonomias, menus, itens de menu e comentários.
  • O campo languageCode recupera o código do idioma para postagens, termos de taxonomia, menus, itens de menu e comentários sem detalhes adicionais de idioma.
  • O campo translations recupera traduções para tipos de postagens e termos de taxonomia.

Quando você consulta comentários, os campos language e languageCode correspondem ao idioma da postagem a que pertencem.

Aqui está um exemplo de uma consulta que recupera postagens junto com seus detalhes associados, incluindo o slug da postagem, 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
          }
        }
      }
    }
  }
}

Executar esta consulta retorna informações de idioma e tradução para cada postagem, juntamente com itens conectados como categorias. As conexões seguem automaticamente o idioma do item de nível superior (postagens 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

WPML GraphQL permite que você use o filtro idioma para:

  • Filtrar postagens, 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, configurando o valor do filtro para todos

WPML GraphQL suporta conexões, então quando você filtra um item de nível superior como uma postagem 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 postagens 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 Postagens Específicas em Diferentes Idiomas

Com WPMLGraphQL, você também pode consultar postagens individuais em qualquer idioma por seu ID de postagem ou slug.

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

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 da postagem, incluindo o título, o slug e o URI, para a postagem ¡Hola mundo!:

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

Consulta de dados de idiomas instalados

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 construir 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 WPML GraphQL com Gatsby e ACF

Gatsby permite que você obtenha dados de WordPress, e com WPML GraphQL, você pode servir conteúdo multilíngue e dados específicos de idioma para seu site Gatsby.

Se você estiver usando WP GraphQL com o plugin ACF, WPML GraphQL e ACF Multilingual estendem essa funcionalidade, permitindo que você consulte dados de campos personalizados em diferentes idiomas.

Por exemplo, digamos que você tenha uma instalação Gatsby com o pacote de complemento gatsby-source-graphql, e seu site WordPress tenha WPML (com o espanhol como idioma secundário) e ACF instalados.

Você pode recuperar postagens multilíngues com seus títulos, códigos de idioma e campos ACF personalizados no Gatsby usando uma simples consulta GraphQL.

export const doQuery = graphql`
  {
    wordpress {
      posts(where: {language: "en"}) {
        nodes {
          title
          language {
            code
          }
          postfields{
            subtitle
          }
          translations {
            title
            language {
              code
            }
            postfields{
              subtitle
            }
          }
        }
      }
    }
  }
`;

Comece com WPML GraphQL

Para usar WPML GraphQL, você precisa de um plano WPML Multilingual CMS ou WPML Multilingual Agency. Ambos os planos fornecem acesso ao plugin WPML e 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 WPML GraphQL, visite nossa página de Problemas Conhecidos e Soluções para obter dicas de solução de problemas.

Ainda precisa de ajuda? Envie um ticket de suporte.

Documentação do WPML
Atualizado
novembro 28, 2024