Navigation überspringen

Home » WPML-Dokumentation » Verwandte Projekte » WPML GraphQL – Hinzufügen von mehrsprachiger Funktionalität zum WPGraphQL-Schema

WPML GraphQL – Hinzufügen von mehrsprachiger Funktionalität zum WPGraphQL-Schema

WPML GraphQL ermöglicht es Ihnen, sprachspezifische Inhalte und Übersetzungen aus dem WPGraphQL-Schema abzufragen, zu filtern und abzurufen.

Wichtigste Funktionen

Filtern Sie Inhalte nach Sprache, einschließlich Beiträge, Taxonomien, Kommentare, Menüs und Menüelemente

Erweitern Sie WPGraphQL mit Sprachfeldern, um spezifische Daten aus dem WPML-Plugin abzurufen

Fragen Sie Daten über alle installierten Sprachen hinweg ab oder konzentrieren Sie sich auf bestimmte Sprachen

Auf dieser Seite:

Erforderliche Plugins

Um loszulegen, installiere und aktiviere die folgenden Plugins:

  • WPGraphQL
  • WPML
  • WPML String Translation
  • WPML GraphQL

Um mehrsprachige Felder aus dem ACF-Plugin in das WPGraphQL-Schema einzubeziehen, installieren Sie bitte auch:

Was können Sie mit WPML GraphQL tun?

WPML GraphQL integriert sich in WPGraphQL, um Ihnen die Abfrage mehrsprachiger Inhalte zu ermöglichen, die mit WPML erstellt wurden.

In GraphQL → GraphQL IDE können Sie den Query Composer verwenden, um:

  • Sprachinformationen für alle abgefragten Inhalte zu erhalten
  • Zugriff auf Übersetzungen für Beiträge, Taxonomien und Kommentare zu erhalten
  • Ihre Abfragen nach Sprache zu filtern
  • Spezifische Beiträge über Sprachen hinweg nach ihrer ID oder ihrem Slug abzufragen

Wie das folgende Bild zeigt, können Sie beispielsweise leicht eine Liste aller Beiträge auf Ihrer Website abrufen, komplett mit deren Sprachcodes, Slugs, URIs und Details zu ihren Übersetzungen.

Sprachfelder im Query Composer verwenden, um Beiträge in allen Sprachen abzurufen

Im Folgenden werden wir anhand einer mehrsprachigen Testseite zeigen, wie Sie WPML GraphQL zur Abfrage von Inhalten und deren Übersetzungen verwenden können.

Abfrage von Sprach- und Übersetzungsinformationen

Mit WPML GraphQL können Sie die Felder language und translation in Ihren Abfragen verwenden:

  • Das language Feld ermöglicht es Ihnen, Details wie den Sprachcode, die URL der Landesflagge, den nativen Namen, den übersetzten Namen und die Homepage-URL für Beitragstypen, Taxonomien, Menüs, Menüelemente und Kommentare abzurufen.
  • Das languageCode Feld ruft den Sprachcode für Beiträge, Taxonomiebegriffe, Menüs, Menüelemente und Kommentare ohne zusätzliche Sprachdetails ab.
  • Das translations Feld ruft Übersetzungen für Beitragstypen und Taxonomiebegriffe ab.

Wenn Sie Kommentare abfragen, entsprechen die language– und languageCode-Felder der Sprache des Beitrags, zu dem sie gehören.

Hier ist ein Beispiel für eine Abfrage, die Beiträge zusammen mit ihren zugehörigen Details abruft, einschließlich des Beitrag-Slugs, der URI, des Sprachcodes, der Kategorien und aller vorhandenen Übersetzungen:

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

Die Ausführung dieser Abfrage liefert Sprach- und Übersetzungsinformationen für jeden Beitrag, zusammen mit verbundenen Elementen wie Kategorien. Die Verbindungen folgen automatisch der Sprache des übergeordneten Elements (in diesem Fall Beiträge):

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

Sprache filtern

WPML GraphQL ermöglicht es Ihnen, den language-Filter zu verwenden, um:

  • Beiträge, Taxonomiebegriffe, Menüs, Menüelemente oder Kommentare nach einer bestimmten Sprache zu filtern
  • Inhalte in einer bestimmten Sprache abzurufen, indem Sie den Filter entsprechend einstellen
  • Alle Inhalte, unabhängig von der Sprache, abzurufen, indem Sie den Filterwert auf all setzen

WPML GraphQL unterstützt Verbindungen, sodass beim Filtern eines übergeordneten Elements wie eines Beitrags nach Sprache alle zugehörigen Elemente, wie Kategorien und Tags, automatisch der gleichen Sprache folgen. Dies macht Ihre Abfragen konsistent und präzise.

Hier ist ein Beispiel für eine Abfrage, die Beiträge auf Spanisch abruft, einschließlich ihrer Slugs, URIs und verbundenen Kategorien:

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

Hier ist das Ergebnis der Abfrage:

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

Abfrage spezifischer Beiträge über Sprachen hinweg

Mit WPMLGraphQL können Sie auch einzelne Beiträge in jeder Sprache anhand ihrer Beitrags-ID oder ihres Slugs abfragen.

Beispielsweise, wenn Sie einen Beitrag mit dem Titel ¡Hola mundo! (die spanische Übersetzung von Hello world!), mit einem Slug von hola-mundo und einer Beitrags-ID von 2 haben, können Sie folgende Abfragen verwenden, um den Beitrag abzurufen:

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

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

Beide Abfragen werden korrekt die Beitragsdaten, einschließlich des Titels, des Slugs und der URI, für den Beitrag ¡Hola mundo! zurückgeben:

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

Abfrage von Daten aus installierten Sprachen

WPML GraphQL stellt zwei Abfragen zur Verfügung, um auf Daten über die auf Ihrer Website installierten Sprachen zuzugreifen:

  • Die Abfrage languages ruft alle registrierten Sprachen zusammen mit relevanten Daten für jede ab
  • Die Abfrage defaultLanguage ruft Informationen über die auf Ihrer Website eingestellte Standardsprache ab

Diese Abfragen können hilfreich sein, wenn Sie Funktionen wie einen Sprachumschalter entwickeln möchten.

Um beispielsweise Daten für alle installierten Sprachen zu erhalten, können Sie die folgende Abfrage ausführen:

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

Die obige Abfrage ergibt das folgende Ergebnis:

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

Verwendung von WPML GraphQL mit Gatsby und ACF

Gatsby ermöglicht es Ihnen, Daten aus WordPress zu beziehen, und mit WPML GraphQL können Sie mehrsprachige Inhalte und sprachspezifische Daten für Ihre Gatsby-Website bereitstellen.

Wenn Sie WP GraphQL mit dem ACF-Plugin verwenden, erweitern WPML GraphQL und ACF Multilingual diese Funktionalität und ermöglichen es Ihnen, benutzerdefinierte Felddaten in verschiedenen Sprachen abzufragen.

Angenommen, Sie haben eine Gatsby-Installation mit dem gatsby-source-graphql Add-on-Paket, und Ihre WordPress-Website hat WPML (mit Spanisch als Zweitsprache) und ACF installiert.

Sie können mehrsprachige Beiträge mit ihren Titeln, Sprachcodes und benutzerdefinierten ACF-Feldern in Gatsby mithilfe einer einfachen GraphQL-Abfrage abrufen.

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

Erste Schritte mit WPML GraphQL

Um WPML GraphQL zu verwenden, benötigen Sie einen WPML Multilingual CMS- oder WPML Multilingual Agency-Plan. Beide Pläne bieten Zugang zum WPML-Plugin und einer Vielzahl zusätzlicher Add-ons, die alle ohne zusätzliche Kosten enthalten sind.

Ermitteln Sie, welcher Plan für Ihre Website am besten geeignet ist.

Benötigen Sie Hilfe?

Wenn Sie Schwierigkeiten bei der Verwendung von WPML GraphQL haben, besuchen Sie unsere Seite Bekannte Probleme und Lösungen für Fehlerbehebungstipps.

Benötigen Sie weitere Hilfe? Reichen Sie ein Support-Ticket ein.

WPML-Dokumentation
Aktualisiert
November 28, 2024