Interroga i contenuti per lingua dal tuo front-end
Ogni query di WPGraphQL ottiene un argomento language. Filtra articoli, tipi di post personalizzati, termini della tassonomia, menu, voci di menu e commenti per lingua in un singolo campo: nessun filtraggio post-query sul front-end, nessun raddoppio del volume delle richieste, nessuna supposizione sulla lingua.
query PostsES {
posts(where: { language: "es" }) {
nodes { slug uri title }
}
}
Quando filtri un nodo di primo livello per lingua, gli elementi collegati (categorie, tag, tassonomie personalizzate) seguono automaticamente la stessa lingua. I risultati sono coerenti senza argomenti aggiuntivi per i campi nidificati.
Vuoi tutto indipendentemente dalla lingua per una sitemap o un conteggio aggregato? Passa language: "all".
Recupera ogni traduzione di un nodo in una sola query
Il campo translations negli articoli e nei termini della tassonomia restituisce ogni versione in un’altra lingua di un nodo: slug, URI, codice della lingua e qualsiasi campo nidificato richiesto. Una query, un round-trip, ogni versione linguistica di una pagina.
Questi sono i dati di cui hai bisogno per un selettore di lingua renderizzato accanto al contenuto della pagina stessa, senza costringere il front-end a seguire una catena di query correlate.
Menu multilingue, tassonomie, commenti e dati sulla lingua
Oltre agli articoli, WPML GraphQL estende lo stesso argomento language e la gestione delle traduzioni a:
- Menu e voci di menu.
menus(where: { language: "fr" })emenuItems(where: { language: "fr" })per la navigazione per lingua. - Termini della tassonomia. Le categorie, i tag e le tassonomie personalizzate seguono la lingua del loro articolo per impostazione predefinita e possono essere interrogati direttamente per lingua.
- Commenti. Restituisci i commenti associati agli articoli in una lingua specifica.
- Query
languagesedefaultLanguage. Elenca ogni lingua installata sul sito con codice, locale, nome nativo, URL della bandiera del paese e URL della home. La forma di dati giusta per un selettore di lingua personalizzato.
Interroga un articolo specifico per ID o slug, in qualsiasi lingua
Due forme di query ottengono un singolo articolo tradotto in base al suo identificatore specifico per la lingua:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title slug uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title slug uri
}
}
Entrambe le forme restituiscono l’articolo tradotto con il suo titolo, slug e URI tradotti, senza una logica separata “è una traduzione?” sul front-end.
Mantenuto rispetto alla versione attuale di WPGraphQL
Abbiamo testato WPML GraphQL 5.2.0 con WPGraphQL 2.24.1 e WPGraphQL for ACF 3.0.0. Il team che gestisce WPGraphQL collabora con noi affinché il livello multilingue continui a muoversi con lo schema. Quando WPGraphQL pubblica una nuova versione, WPML GraphQL è subito pronto a seguirla.
Funziona con ACF se aggiungi ACFML e WPGraphQL for ACF
Molti siti headless costruiscono il loro modello di contenuto in Advanced Custom Fields e lo espongono tramite WPGraphQL. Aggiungi ACFML e WPGraphQL for ACF, e i tuoi dati ACF seguiranno le stesse regole linguistiche del resto dello schema.
Interroga una pagina delle opzioni di ACF in qualsiasi lingua
Le pagine delle opzioni si trovano all’esterno di qualsiasi articolo, quindi accettano un argomento language proprio. Anche i campi secondari all’interno dei ripetitori e dei contenuti flessibili vengono restituiti in quella lingua. La query di seguito legge il ripetitore offices e il campo del contenuto flessibile promos. A partire da WPGraphQL for ACF 3.0.0, una pagina delle opzioni è presente nello schema solo quando attivi show_in_graphql per essa.
query StoreSettingsES {
storeSettings(language: "es") {
storeContact {
heading
offices { city openingHours }
promos {
... on StoreContactPromosBannerLayout { bannerText }
}
}
}
}
I campi di relazione restituiscono l’articolo tradotto
I campi ACF negli articoli e nei tipi di post personalizzati non accettano un argomento language proprio. Seguono la lingua della richiesta. Nella query di seguito, where: { language: "es" } imposta quella lingua per l’intera query.
Un campo di relazione impostato su Copia contiene già gli ID tradotti. Quando WPML copia il campo nella traduzione, ACFML scambia ogni ID con la sua traduzione. Mantiene l’ID originale quando la traduzione non esiste ancora. Puoi impostare questa preferenza per ogni campo nell’editor del gruppo di campi di ACF, sotto Preferenze di traduzione. Consulta i Campi relazionali nella nostra guida alla traduzione dei campi personalizzati di ACF.
query BlendsES {
posts(where: { language: "es" }) {
nodes {
title
postExtras {
relatedGuide {
nodes { ... on Post { title languageCode } }
}
}
}
}
}
L’articolo in spagnolo restituisce la guida in spagnolo.
Imposta la lingua in ogni richiesta. Una query che legge un articolo per ID o slug non contiene alcun filtro language. Viene quindi eseguita nella lingua predefinita e anche gli articoli correlati vengono restituiti nella lingua predefinita.
Il modo in cui imposti la lingua dipende dal tuo formato URL di WPML. Con un dominio per lingua, chiama l’endpoint di quella lingua: https://es.example.com/graphql. Con il parametro della lingua, aggiungilo all’endpoint: /graphql?lang=es. Il formato della directory non ha un endpoint per lingua, quindi filtra per lingua all’interno della query.
Quando manca una traduzione
WPML non ricorre alla lingua predefinita. Se un articolo correlato non ha una traduzione nella lingua della richiesta, viene escluso dal risultato:
{
"data": {
"posts": {
"nodes": [
{
"title": "Nuestras mezclas de la casa",
"postExtras": {
"relatedGuide": {
"nodes": [
{ "title": "Guía de compra de espresso", "languageCode": "es" }
]
}
}
}
]
}
}
}
Il campo punta a due guide. Solo una di esse è tradotta in spagnolo, quindi la query in spagnolo ne restituisce una. Il tuo front-end riceve un elenco più breve, mai un mix di lingue. Traduci l’articolo mancante e apparirà nella stessa query.
L’elenco rimane in una sola lingua quando il tipo di post è traducibile. Se imposti il tipo di post su Visualizza come tradotto, WPML restituisce la guida non tradotta nella lingua predefinita. L’elenco quindi mescola le lingue.