@gsandf/wordpress-graphql-schema
🤝 GraphQL schema for interacting with the WordPress API
⚠️ This is a work-in-progress. Until a major version number is met, expect
features to change. Also, only queries have been added right now.
Nearly all websites we make right now use React with server-side rendering. In
order to deliver projects quickly and cheaply, we often use WordPress as an
admin interface. This package is a work-in-progress to help communication
between the two.
Usage
This creates a GraphQL server that fetches data from https://example.com/wp-json
:
import { createSchema } from '@gsandf/wordpress-graphql-schema';
import { GraphQLServer } from 'graphql-yoga';
const graphqlOptions = {
endpoint: '/graphql',
playground: '/graphql',
port: process.env.PORT || 3000,
subscriptions: '/graphql'
};
const wordPressOptions = {
baseURL: 'https://example.com/wp-json'
};
const server = new GraphQLServer({ schema: createSchema(wordPressOptions) });
server.start(graphqlOptions, ({ playground, port }) => {
console.log(` > Site @ http://localhost:${port}/`);
console.log(` > Playground @ http://localhost:${port}${playground}`);
});
API
createSchema(options)
options
Type: object
Options are passed to axios. For details, see the axios
docs.
Options with defaults already set are listed below:
options.baseURL
Type: string
Default: 'localhost:8080/wp-json'
Type: object
Default: { 'Content-Type': 'application/json' }
createUncompiledSchema(options)
Same as createSchema
, but returns an object with typeDefs
, resolvers
, and
schemaDefinitions
instead of a schema AST. This can be useful if you need to
tweak parts of the schema before using it.
options
Type: object
Options are passed to axios. For details, see the axios
docs.
Options with defaults already set are listed below:
options.baseURL
Type: string
Default: 'localhost:8080/wp-json'
Type: object
Default: { 'Content-Type': 'application/json' }
wpFetch(path, options)
Create a network request to the WordPress API.
path
Type: string
The endpoint to call.
options
Type: object
Options are passed to axios. For details, see the axios
docs.
options.urlParams
Used to pre-compile request paths. For example:
const options = {
urlParams: { id: 3 }
};
wpFetch('/example/:id', options);
```
...will create a network request to `{{baseURL}}/example/3`.
## Install
Using [Yarn]:
```bash
$ yarn add @gsandf/wordpress-graphql-schema
…or using npm:
$ npm i --save @gsandf/wordpress-graphql-schema
License
MIT