WPML

Consulte o conteúdo por idioma a partir do seu front-end

Cada consulta do WPGraphQL ganha um argumento language. Filtre posts, tipos de post personalizados, termos de taxonomia, menus, itens de menu e comentários por idioma em um único campo – sem filtragem pós-consulta no front-end, sem dobrar o volume de requisições, sem adivinhar o idioma.

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

Quando você filtra um nó de nível superior por idioma, os itens conectados (categorias, tags, taxonomias personalizadas) seguem automaticamente o mesmo idioma. Os resultados são consistentes sem argumentos extras por campo aninhado.

Quer tudo, independentemente do idioma, para um sitemap ou contagem agregada? Passe language: "all".

Busque todas as traduções de um nó em uma única consulta

O campo translations em posts e termos de taxonomia retorna todas as versões em outros idiomas de um nó: slug, URI, código do idioma e quaisquer campos aninhados que você solicitar. Uma consulta, uma ida e volta, todas as versões de idioma de uma página.

Esses são os dados que você precisa para um seletor de idiomas renderizado ao lado do próprio conteúdo da página, sem fazer com que o front-end siga uma cadeia de consultas relacionadas.

Menus multilíngues, taxonomias, comentários e dados de idioma

Além dos posts, o WPML GraphQL estende o mesmo argumento language e o tratamento de tradução para:

  • Menus e itens de menu. menus(where: { language: "fr" }) e menuItems(where: { language: "fr" }) para navegação por idioma.
  • Termos de taxonomia. Categorias, tags e taxonomias personalizadas seguem o idioma do post por padrão e podem ser consultadas diretamente por idioma.
  • Comentários. Retorne comentários associados a posts em um idioma específico.
  • Consultas languages e defaultLanguage. Liste todos os idiomas instalados no site com código, localidade (locale), nome nativo, URL da bandeira do país e URL inicial. O formato de dados certo para um seletor de idiomas personalizado.

Consulte um post específico por ID ou slug, em qualquer idioma

Dois formatos de consulta obtêm um único post traduzido pelo seu identificador específico de idioma:

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

Qualquer uma das formas retorna o post traduzido com seu título, slug e URI traduzidos – sem uma lógica separada de “isso é uma tradução?” no front-end.

Mantido de acordo com a versão atual do WPGraphQL

Testamos o WPML GraphQL 5.2.0 com o WPGraphQL 2.24.1 e o WPGraphQL for ACF 3.0.0. A equipe que mantém o WPGraphQL trabalha conosco para que a camada multilíngue continue acompanhando o esquema. Quando o WPGraphQL lança uma nova versão, o WPML GraphQL vem logo atrás.

Funciona com o ACF quando você adiciona o ACFML e o WPGraphQL for ACF

Muitos sites headless constroem seu modelo de conteúdo no Advanced Custom Fields e o expõem através do WPGraphQL. Adicione o ACFML e o WPGraphQL for ACF, e seus dados do ACF seguirão as mesmas regras de idioma que o restante do esquema.

Consulte uma página de opções do ACF em qualquer idioma

As páginas de opções ficam fora de qualquer post, então elas recebem um argumento language próprio. Subcampos dentro de repetidores e conteúdo flexível também retornam nesse idioma. A consulta abaixo lê o repetidor offices e o campo de conteúdo flexível promos. Desde o WPGraphQL for ACF 3.0.0, uma página de opções está no esquema apenas quando você ativa o show_in_graphql para ela.

query StoreSettingsES {
  storeSettings(language: "es") {
    storeContact {
      heading
      offices { city openingHours }
      promos {
        ... on StoreContactPromosBannerLayout { bannerText }
      }
    }
  }
}

Campos de relacionamento retornam o post traduzido

Os campos do ACF em posts e tipos de post personalizados não recebem um argumento language próprio. Eles seguem o idioma da requisição. Na consulta abaixo, where: { language: "es" } define esse idioma para toda a consulta.

Um campo de relacionamento definido como Copiar já contém IDs traduzidos. Quando o WPML copia o campo para a tradução, o ACFML troca cada ID por sua tradução. Ele mantém o ID original quando a tradução ainda não existe. Você define essa preferência por campo no editor de grupos de campos do ACF, em Preferências de tradução. Consulte Campos relacionais em nosso guia sobre como traduzir campos personalizados do ACF.

query BlendsES {
  posts(where: { language: "es" }) {
    nodes {
      title
      postExtras {
        relatedGuide {
          nodes { ... on Post { title languageCode } }
        }
      }
    }
  }
}

O post em espanhol retorna o guia em espanhol.

Defina o idioma em cada requisição. Uma consulta que lê um post por ID ou slug não carrega nenhum filtro language. Ela então é executada no idioma padrão, e os posts relacionados também retornam no idioma padrão.

A forma como você define o idioma depende do seu formato de URL do WPML. Com um domínio por idioma, chame o endpoint desse idioma: https://es.example.com/graphql. Com o parâmetro de idioma, adicione-o ao endpoint: /graphql?lang=es. O formato de diretório não tem um endpoint por idioma, então filtre por idioma dentro da consulta.

Quando uma tradução está faltando

O WPML não faz fallback para o idioma padrão. Se um post relacionado não tiver tradução no idioma da requisição, ele ficará de fora do resultado:

{
  "data": {
    "posts": {
      "nodes": [
        {
          "title": "Nuestras mezclas de la casa",
          "postExtras": {
            "relatedGuide": {
              "nodes": [
                { "title": "Guía de compra de espresso", "languageCode": "es" }
              ]
            }
          }
        }
      ]
    }
  }
}

O campo aponta para dois guias. Apenas um deles está traduzido para o espanhol, então a consulta em espanhol retorna um. Seu front-end recebe uma lista mais curta, nunca uma mistura de idiomas. Traduza o post que está faltando e ele aparecerá na mesma consulta.

A lista permanece em um idioma quando o tipo de post é traduzível. Se você definir o tipo de post como Exibir como traduzido, o WPML retornará o guia não traduzido no idioma padrão. A lista então misturará os idiomas.

O WPML GraphQL está incluído no WPML

O WPML GraphQL vem com o Multilingual CMS e o WPML Agency. Nenhuma compra separada, nenhuma taxa por site. Compre o WPML uma vez e sua stack multilíngue headless terá sua camada de idioma. Se você já tem o WPML, ative o WPML GraphQL na sua página de downloads do WPML.