Sauter la navigation

Home » Documentation WPML » Projets connexes » WPML GraphQL – Ajouter une fonctionnalité multilingue au schéma WPGraphQL

WPML GraphQL – Ajouter une fonctionnalité multilingue au schéma WPGraphQL

WPML GraphQL vous permet de requêter, filtrer et récupérer du contenu spécifique à une langue et des traductions à partir du schéma WPGraphQL.

Principales fonctionnalités

Filtrer le contenu par langue, y compris les articles, taxonomies, commentaires, menus et éléments de menu

Étendre WPGraphQL avec des champs de langue pour récupérer des données spécifiques du plugin WPML

Requêter des données dans toutes les langues installées ou se concentrer sur des langues spécifiques

Sur cette Page :

Extensions requises

Pour commencer, installe et active les extensions suivantes :

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

Pour inclure des champs multilingues du plugin ACF dans le schéma WPGraphQL, installez également :

Que pouvez-vous faire avec WPML GraphQL?

WPML GraphQL s’intègre à WPGraphQL pour vous permettre de requêter du contenu multilingue créé avec WPML.

Depuis GraphQL → GraphQL IDE, vous pouvez utiliser le Query Composer pour :

  • Obtenir des informations sur la langue pour tout contenu que vous requêtez
  • Accéder aux traductions pour les articles, taxonomies et commentaires
  • Filtrer vos requêtes par langue
  • Requêter des articles spécifiques dans différentes langues par leur ID ou slug

Par exemple, comme le montre l’image ci-dessous, vous pouvez facilement afficher une liste de tous les articles de votre site, avec leurs codes de langue, slugs, URI et détails de leurs traductions.

Utilisation des champs de langue dans le compositeur de requêtes pour récupérer les articles dans toutes les langues.

Ci-dessous, nous utiliserons un site de test multilingue pour vous montrer comment utiliser WPML GraphQL pour requêter du contenu et ses traductions.

Interroger les informations sur les langues et les traductions.

Avec WPML GraphQL, vous pouvez utiliser les champs langue et traduction dans vos requêtes :

  • Le champ language vous permet de récupérer des détails comme le code de la langue, l’URL du drapeau du pays, le nom natif, le nom traduit et l’URL de la page d’accueil pour les types de publication, taxonomies, menus, éléments de menu et commentaires.
  • Le champ languageCode obtient le code de la langue pour les articles, termes de taxonomie, menus, éléments de menu et commentaires sans détails supplémentaires sur la langue.
  • Le champ translations récupère les traductions pour les types de publication et les termes de taxonomie.

Lorsque vous requêtez des commentaires, les champs language et languageCode correspondent à la langue de l’article auquel ils appartiennent.

Voici un exemple de requête qui récupère des articles avec leurs détails associés, y compris le slug de l’article, l’URI, le code de la langue, les catégories et toutes les traductions existantes :

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

L’exécution de cette requête renvoie des informations sur la langue et la traduction pour chaque article, ainsi que des éléments connectés comme les catégories. Les connexions suivent automatiquement la langue de l’élément de niveau supérieur (les articles dans ce cas) :

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

Filtrage des langues

WPML GraphQL vous permet d’utiliser le filtre langue pour :

  • Filtrer les articles, termes de taxonomie, menus, éléments de menu ou commentaires par une langue spécifique
  • Récupérer du contenu dans une langue particulière en définissant le filtre en conséquence
  • Obtenir tout le contenu, quelle que soit la langue, en définissant la valeur du filtre sur tout

WPML GraphQL prend en charge les connexions, donc lorsque vous filtrez un élément de niveau supérieur comme un article par langue, tous les éléments associés, tels que les catégories et les balises, suivront automatiquement la même langue. Cela rend vos requêtes cohérentes et précises.

Voici un exemple de requête qui récupère des articles en espagnol, y compris leurs slugs, URI et catégories associées :

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

Voici ce que la requête renvoie :

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

Requêter des articles spécifiques dans différentes langues

Avec WPMLGraphQL, vous pouvez également requêter des articles individuels dans n’importe quelle langue par leur ID ou slug.

Par exemple, si vous avez un article intitulé ¡Hola mundo! (la traduction espagnole de Hello world!), avec un slug de hola-mundo et un identifiant d’article de 2, vous pouvez utiliser les requêtes suivantes pour récupérer l’article :

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

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

Les deux requêtes renverront correctement les données de l’article, y compris le titre, le slug et l’URI, pour l’article ¡Hola mundo! :

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

Interroger les données des langues installées

WPML GraphQL fournit deux requêtes pour accéder aux données concernant les langues installées sur votre site :

  • La requête languages récupère toutes les langues enregistrées ainsi que les données pertinentes pour chacune
  • La requête defaultLanguage récupère des informations sur la langue par défaut définie sur votre site

Ces requêtes peuvent être utiles si vous cherchez à créer des fonctionnalités comme un sélecteur de langue.

Par exemple, pour obtenir des données sur toutes les langues installées, vous pouvez exécuter la requête suivante :

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

La requête ci-dessus produit le résultat suivant :

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

Utilisation de WPML GraphQL avec Gatsby et ACF

Gatsby vous permet de sourcer des données depuis WordPress, et avec WPML GraphQL, vous pouvez servir du contenu multilingue et des données spécifiques à chaque langue sur votre site Gatsby.

Si vous utilisez WP GraphQL avec le plugin ACF, WPML GraphQL et ACF Multilingual étendent cette fonctionnalité, vous permettant de requêter des données de champs personnalisés dans différentes langues.

Par exemple, disons que vous avez une installation Gatsby avec le package add-on gatsby-source-graphql, et que votre site WordPress dispose de WPML (avec l’espagnol comme langue secondaire) et ACF installés.

Vous pouvez récupérer des articles multilingues avec leurs titres, codes de langue et champs ACF personnalisés dans Gatsby en utilisant une simple requête GraphQL.

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

Commencez avec WPML GraphQL

Pour utiliser WPML GraphQL, vous avez besoin d’un plan WPML Multilingual CMS ou WPML Multilingual Agency. Les deux plans donnent accès au plugin WPML et à une large gamme de modules complémentaires supplémentaires, tous inclus sans frais supplémentaires.

Voir quel plan est le meilleur pour votre site.

Besoin d’aide ?

Si vous rencontrez des difficultés avec l’utilisation de WPML GraphQL, visitez notre page Problèmes connus et solutions pour des conseils de dépannage.

Besoin d’aide supplémentaire ? Soumettez un ticket de support.

Documentation WPML
Mis à jour
Novembre 28, 2024