Interactuar con la API GraphQL
Interactuar con la API GraphQLMigrar tu aplicación de WordPress a otro framework o CMS de PHP

Migrar tu aplicación de WordPress a otro framework o CMS de PHP

El esquema GraphQL proporcionado por Gato GraphQL contiene campos para obtener datos de WordPress: entradas, usuarios, comentarios, etiquetas, categorías, etc.

El código en los resolvers de PHP que obtiene datos de WordPress depende de WordPress; ese código no puede ejecutarse en una aplicación que no sea WordPress.

Sin embargo, Gato GraphQL tiene cada uno de estos resolvers implementados mediante 2 paquetes:

  1. Uno de PHP "vanilla", que contiene todo el código genérico
  2. Uno específico de WordPress, que contiene las invocaciones reales a los métodos de WordPress que satisfacen ese resolver

Por ejemplo, en esta consulta GraphQL:

{
  posts {
    id
    title
  }
}

...la lógica para obtener las entradas se compone de:

  1. El campo Root.posts: vive en el paquete genérico posts
  2. Su resolución para WordPress mediante el método get_posts: vive en el paquete específico de WordPress posts-wp.

La división del código entre paquetes no-WordPress/WordPress es de alrededor del 80/20%, lo que significa que el 80% del código es reutilizable con otro framework/CMS, y solo el 20% del código necesitaría ser reimplementado.

Además, toda la funcionalidad en Gato GraphQL se entrega mediante módulos, y los módulos pueden habilitarse/deshabilitarse a voluntad.

Módulos del esquema
Módulos del esquema

Modules es una característica implementada por motivos de seguridad: si no necesitas exponer datos de usuario en tu API pública, entonces puedes deshabilitar el módulo Users, y los campos correspondientes (como Root.users) nunca se añadirán al esquema.

Los módulos están directamente mapeados a paquetes PHP subyacentes. Como tal, cuando se ejecuta Gato GraphQL como una app independiente, podemos cargar selectivamente aquellos módulos/paquetes que necesitamos, y ninguno de los otros.

Por ejemplo, si tu aplicación solo imprime datos de entradas, categorías y etiquetas, entonces solo es necesario cargar los paquetes posts-wp, categories-wp y tags-wp (junto con sus dependencias).

Entonces, al migrar lejos de WordPress (digamos, a Laravel, o Symfony), solo esos 3 paquetes específicos de WordPress tendrían que ser reimplementados para el nuevo framework/CMS, y nada más.