Mit der GraphQL API interagieren
Mit der GraphQL API interagierenDeine Anwendung von WordPress zu einem anderen PHP-Framework oder CMS migrieren

Deine Anwendung von WordPress zu einem anderen PHP-Framework oder CMS migrieren

Das von Gato GraphQL bereitgestellte GraphQL-Schema enthält Felder zum Abrufen von WordPress-Daten: Beiträge, Nutzer, Kommentare, Tags, Kategorien usw.

Der Code in den PHP-Resolvern, der WordPress-Daten abruft, ist von WordPress abhängig; dieser Code kann in einer Nicht-WordPress-Anwendung nicht ausgeführt werden.

Gato GraphQL implementiert jedoch jeden dieser Resolver über 2 Pakete:

  1. Ein "vanilla" PHP-Paket, das den gesamten generischen Code enthält
  2. Ein WordPress-spezifisches Paket, das die eigentlichen Aufrufe der WordPress-Methoden enthält, die diesen Resolver erfüllen

Zum Beispiel in dieser GraphQL-Query:

{
  posts {
    id
    title
  }
}

...setzt sich die Logik zum Abrufen von Beiträgen zusammen aus:

  1. Dem Feld Root.posts: Es befindet sich im generischen Paket posts
  2. Seiner Auflösung für WordPress über die Methode get_posts: Sie befindet sich im WordPress-spezifischen Paket posts-wp.

Die Aufteilung des Codes zwischen Nicht-WordPress/WordPress-Paketen beträgt etwa 80/20 %, was bedeutet, dass 80 % des Codes mit einem anderen Framework/CMS wiederverwendbar ist, und nur 20 % des Codes neu implementiert werden müsste.

Außerdem wird die gesamte Funktionalität in Gato GraphQL über Module bereitgestellt, und Module können nach Belieben aktiviert/deaktiviert werden.

Schema-Module
Schema-Module

Module sind eine Funktion, die aus Sicherheitsgründen implementiert wurde: Wenn du keine Nutzerdaten in deiner öffentlichen API bereitstellen musst, kannst du das Users-Modul deaktivieren, und die entsprechenden Felder (wie Root.users) werden dem Schema nie hinzugefügt.

Module sind direkt den zugrundeliegenden PHP-Paketen zugeordnet. Wenn Gato GraphQL als eigenständige Anwendung läuft, können wir daher selektiv die benötigten Module/Pakete laden und alle anderen weglassen.

Wenn deine Anwendung beispielsweise nur Daten für Beiträge, Kategorien und Tags ausgibt, müssen nur die Pakete posts-wp, categories-wp und tags-wp (zusammen mit ihren Abhängigkeiten) geladen werden.

Wenn du dann von WordPress wegmigrierst (z. B. zu Laravel oder Symfony), müssten nur diese 3 WordPress-spezifischen Pakete für das neue Framework/CMS neu implementiert werden, und nichts sonst.