Salta la navigazione

Home » Documentazione di WPML » Progetti correlati » WPML GraphQL – Aggiungi funzionalità multilingue allo schema WPGraphQL

WPML GraphQL – Aggiungi funzionalità multilingue allo schema WPGraphQL

WPML GraphQL ti permette di interrogare, filtrare e recuperare contenuti specifici per lingua e traduzioni dallo schema WPGraphQL.

Funzionalità principali

Filtra i contenuti per lingua, inclusi post, tassonomie, commenti, menu e voci di menu

Estendi WPGraphQL con campi di lingua per recuperare dati specifici dal plugin WPML

Interroga i dati in tutte le lingue installate o concentrati su lingue specifiche

In questa Pagina:

Plugin necessari

Per iniziare, installa e attiva i seguenti plugin:

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

Per includere campi multilingue dal plugin ACF nello schema WPGraphQL, installa anche:

Cosa puoi fare con WPML GraphQL?

WPML GraphQL si integra con WPGraphQL per permetterti di interrogare contenuti multilingue creati con WPML.

Da GraphQL → GraphQL IDE, puoi usare il Query Composer per:

  • Ottieni informazioni sulla lingua per qualsiasi contenuto interroghi
  • Accedi alle traduzioni per post, tassonomie e commenti
  • Filtra le tue interrogazioni per lingua
  • Interroga post specifici in diverse lingue per ID o slug

Ad esempio, come mostra l’immagine qui sotto, puoi facilmente ottenere un elenco di tutti i post sul tuo sito, completo di codici lingua, slug, URI e dettagli per le loro traduzioni.

Usare i campi della lingua nel Query Composer per recuperare i post in tutte le lingue

Di seguito, useremo un sito di test multilingue per mostrarti come usare WPML GraphQL per interrogare contenuti e le loro traduzioni.

Interrogazione delle informazioni sulla lingua e sulla traduzione

Con WPML GraphQL, puoi usare i campi lingua e traduzione nelle tue interrogazioni:

  • Il campo language permette di recuperare dettagli come il codice lingua, l’URL della bandiera del paese, il nome nativo, il nome tradotto e l’URL della homepage per tipi di post, tassonomie, menu, voci di menu e commenti.
  • Il campo languageCode ottiene il codice lingua per post, termini di tassonomia, menu, voci di menu e commenti senza dettagli aggiuntivi sulla lingua.
  • Il campo translations recupera le traduzioni per tipi di post e termini di tassonomia.

Quando interroghi i commenti, i campi language e languageCode corrispondono alla lingua del post a cui appartengono.

Ecco un esempio di un’interrogazione che recupera post insieme ai loro dettagli associati, inclusi lo slug del post, l’URI, il codice lingua, le categorie e qualsiasi traduzione esistente:

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

Eseguendo questa interrogazione si ottengono informazioni sulla lingua e sulla traduzione per ogni post, insieme agli elementi collegati come le categorie. Le connessioni seguono automaticamente la lingua dell’elemento di livello superiore (in questo caso i post):

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

Filtro della lingua

WPML GraphQL ti permette di usare il filtro lingua per:

  • Filtrare post, termini di tassonomia, menu, voci di menu o commenti per una lingua specifica
  • Recuperare contenuti in una lingua particolare impostando il filtro di conseguenza
  • Ottenere tutti i contenuti, indipendentemente dalla lingua, impostando il valore del filtro su tutti

WPML GraphQL supporta le connessioni, quindi quando filtri un elemento di livello superiore come un post per lingua, tutti gli elementi correlati, come categorie e tag, seguiranno automaticamente la stessa lingua. Questo rende le tue interrogazioni coerenti e accurate.

Ecco un esempio di un’interrogazione che recupera post in spagnolo, inclusi i loro slug, URI e categorie collegate:

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

Ecco cosa restituisce l’interrogazione:

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

Interrogare post specifici in diverse lingue

Con WPMLGraphQL, puoi anche interrogare singoli post in qualsiasi lingua per ID del post o slug.

Per esempio, se hai un post intitolato ¡Hola mundo! (la traduzione spagnola di Hello world!), con uno slug di hola-mundo e un ID post di 2, puoi usare le seguenti query per recuperare il post:

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

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

Entrambe le query restituiranno correttamente i dati del post, inclusi il titolo, lo slug e l’URI, per il post ¡Hola mundo!:

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

Interrogare i dati delle lingue installate

WPML GraphQL fornisce due query per accedere ai dati sulle lingue installate sul tuo sito:

  • La query lingue recupera tutte le lingue registrate insieme ai dati rilevanti per ciascuna
  • La query lingua predefinita recupera informazioni sulla lingua predefinita impostata sul tuo sito

Queste query possono essere utili se stai cercando di costruire funzionalità come un selettore di lingua.

Per esempio, per ottenere dati su tutte le lingue installate, puoi eseguire la seguente query:

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

La query precedente produce il seguente risultato:

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

Usare WPML GraphQL con Gatsby e ACF

Gatsby ti permette di ottenere dati da WordPress, e con WPML GraphQL, puoi servire contenuti multilingue e dati specifici per lingua al tuo sito Gatsby.

Se stai usando WP GraphQL con il plugin ACF, WPML GraphQL e ACF Multilingual estendono questa funzionalità, permettendoti di interrogare i dati dei campi personalizzati in diverse lingue.

Per esempio, supponiamo che tu abbia un’installazione di Gatsby con il pacchetto aggiuntivo gatsby-source-graphql, e il tuo sito WordPress abbia WPML (con lo spagnolo come lingua secondaria) e ACF installati.

Puoi recuperare post multilingue con i loro titoli, codici lingua e campi ACF personalizzati in Gatsby usando una semplice query GraphQL.

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

Inizia con WPML GraphQL

Per usare WPML GraphQL, hai bisogno di un piano WPML Multilingual CMS o WPML Multilingual Agency. Entrambi i piani forniscono accesso al plugin WPML e a una vasta gamma di componenti aggiuntivi, tutti inclusi senza costi aggiuntivi.

Vedi quale piano è migliore per il tuo sito.

Hai bisogno di aiuto?

Se hai problemi a usare WPML GraphQL, visita la nostra pagina Problemi Conosciuti e Soluzioni per suggerimenti sulla risoluzione dei problemi.

Hai ancora bisogno di aiuto? Invia un ticket di supporto.

Documentazione di WPML
Aggiornato
Novembre 28, 2024