Saltar al contenido Saltar a la barra lateral

Home » Documentación de WPML » Proyectos relacionados » WPML GraphQL – Añada funcionalidad multilingüe al esquema de WPGraphQL

WPML GraphQL – Añada funcionalidad multilingüe al esquema de WPGraphQL

WPML GraphQL le permite consultar, filtrar y recuperar contenido específico de idioma y traducciones del esquema de WPGraphQL.

Características principales

Filtre contenido por idioma, incluidas entradas, taxonomías, comentarios, menús y elementos de menú

Amplíe WPGraphQL con campos de idioma para recuperar datos específicos del plugin WPML

Consultar datos en todos los idiomas instalados o centrarse en idiomas específicos

Complementos requeridos

Para empezar, instala y activa los siguientes plugins:

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

Para incluir campos multilingües del plugin ACF en el esquema de WPGraphQL, instale también:

¿Qué puede hacer con WPML GraphQL?

WPML GraphQL se integra con WPGraphQL para permitirle consultar contenido multilingüe creado con WPML.

Desde GraphQL → GraphQL IDE, puede usar el Query Composer para:

  • Obtenga información de idioma para cualquier contenido que consulte
  • Acceda a traducciones de entradas, taxonomías y comentarios
  • Filtrar sus consultas por idioma
  • Consulte entradas específicas en varios idiomas por su ID o slug

Por ejemplo, como muestra la imagen siguiente, puede obtener fácilmente una lista de todas las entradas de su sitio, completa con sus códigos de idioma, slugs, URI y detalles de sus traducciones.

Uso de los campos de idioma en el Query Composer para recuperar entradas en todos los idiomas

A continuación, utilizaremos un sitio de prueba multilingüe para mostrarle cómo usar WPML GraphQL para consultar contenido y sus traducciones.

Consultar información de idioma y traducción

Con WPML GraphQL, puede usar los campos language y translation en sus consultas:

  • El language campo le permite recuperar detalles como el código de idioma, la URL de la bandera del país, el nombre nativo, el nombre traducido y la URL de la página de inicio para tipos de entrada, taxonomías, menús, elementos de menú y comentarios.
  • El languageCode campo obtiene el código de idioma para entradas, términos de taxonomía, menús, elementos de menú y comentarios sin detalles de idioma adicionales.
  • El translations campo recupera traducciones para tipos de entrada y términos de taxonomía.

Cuando consulte comentarios, los campos language y languageCode coinciden con el idioma de la entrada a la que pertenecen.

Este es un ejemplo de una consulta que recupera entradas junto con sus detalles asociados, incluido el slug de la entrada, el URI, el código de idioma, las categorías y cualquier traducción que exista:

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

La ejecución de esta consulta devuelve información de idioma y traducción para cada entrada, junto con elementos conectados como categorías. Las conexiones siguen automáticamente el idioma del elemento de nivel superior (entradas en este 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"
  }
  ]
  }
  }
  ]
  }
  ]
  }
  }
}

Filtrado de idiomas

WPML GraphQL le permite usar el filtro language para:

  • Filtrar entradas, términos de taxonomía, menús, elementos de menú o comentarios por un idioma específico
  • Recuperar contenido en un idioma particular estableciendo el filtro en consecuencia
  • Obtener todo el contenido, independientemente del idioma, estableciendo el valor del filtro en all

WPML GraphQL admite conexiones, por lo que cuando filtre un elemento de nivel superior como una entrada por idioma, todos los elementos relacionados, como categorías y etiquetas, seguirán automáticamente el mismo idioma. Esto hace que sus consultas sean coherentes y precisas.

Este es un ejemplo de una consulta que recupera entradas en español, incluidos sus slugs, URI y categorías conectadas:

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

Esto es lo que devuelve la consulta:

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

Consultar entradas específicas en varios idiomas

Con WPML GraphQL, también puede consultar entradas individuales en cualquier idioma por su ID de entrada o slug.

Por ejemplo, si tiene una entrada titulada ¡Hola mundo! (la traducción al español de Hello world!), con un slug de hola-mundo y un ID de entrada de 2, puede usar las siguientes consultas para recuperar la entrada:

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

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

Ambas consultas devolverán correctamente los datos de la entrada, incluidos el título, el slug y el URI, para la entrada ¡Hola mundo!:

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

Consulta de datos de los idiomas instalados

WPML GraphQL proporciona dos consultas para acceder a datos sobre los idiomas instalados en su sitio:

  • La consulta languages recupera todos los idiomas registrados junto con los datos relevantes para cada uno
  • La consulta defaultLanguage recupera información sobre el idioma predeterminado establecido en su sitio

Estas consultas pueden ser útiles si desea crear funciones como un selector de idioma.

Por ejemplo, para obtener datos de todos los idiomas instalados, puede ejecutar la siguiente consulta:

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

La consulta anterior produce el siguiente 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/"
  }
  ]
  }
}

Usar WPML GraphQL con ACF

Si está usando WPGraphQL con el plugin ACF, los complementos WPML GraphQL y ACFML (ACF Multilingual) amplían esta funcionalidad. Esto le permite consultar datos de campos personalizados en diferentes idiomas.

WPGraphQL con su extensión ACF expone las páginas de opciones de ACF como objetos raíz. Juntos, WPML GraphQL y los complementos ACFML añaden un parámetro de idioma a las consultas de páginas de opciones, esperando un código de idioma que coincida con uno de los idiomas activos en su sitio (por ejemplo, «de», «pt-pt»). Esto le permite consultar los datos en un idioma específico:

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

Comience con WPML GraphQL

Para usar WPML GraphQL, necesita un plan WPML Multilingual CMS o WPML Multilingual Agency. Ambos planes proporcionan acceso al plugin WPML y a una amplia gama de complementos adicionales, todos incluidos sin coste adicional.

Vea qué plan es mejor para su sitio.

¿Necesita ayuda?

Si tiene problemas al usar WPML GraphQL, visite nuestra página de problemas conocidos y soluciones para obtener consejos de solución de problemas.

¿Aún necesita ayuda? Envíe un ticket de soporte.

Actualizado
mayo 6, 2026