Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gsandf/wordpress-graphql-schema
π€ GraphQL schema for interacting with the WordPress API
https://github.com/gsandf/wordpress-graphql-schema
Last synced: 8 days ago
JSON representation
π€ GraphQL schema for interacting with the WordPress API
- Host: GitHub
- URL: https://github.com/gsandf/wordpress-graphql-schema
- Owner: gsandf
- Created: 2020-03-13T16:44:15.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T08:43:38.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T00:54:36.149Z (about 1 month ago)
- Language: TypeScript
- Size: 1.26 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @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`:
```js
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](https://github.com/axios/axios#request-config).Options with defaults already set are listed below:
#### `options.baseURL`
Type: `string`
Default: `'localhost:8080/wp-json'`#### `options.headers`
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](https://github.com/axios/axios#request-config).Options with defaults already set are listed below:
#### `options.baseURL`
Type: `string`
Default: `'localhost:8080/wp-json'`#### `options.headers`
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](https://github.com/axios/axios#request-config).#### `options.urlParams`
Used to pre-compile request paths. For example:
````js
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]:
```bash
$ npm i --save @gsandf/wordpress-graphql-schema
```## License
MIT
[npm]: https://www.npmjs.com/
[yarn]: https://yarnpkg.com/