Add GraphQL endpoint to WordPress
I try to add GraphQL endpoint to WordPress. Used plugin graphql-wp is easy add GraphQL endpoint to WordPress. […]
広告ここから
広告ここまで
目次
I try to add GraphQL endpoint to WordPress.
Used plugin
graphql-wp is easy add GraphQL endpoint to WordPress.
Set up
$ cd /PATH/TO/WORDPRESS $ composer require mohiohio/graphql-wp $ cd web $ wp plugin activate graphql-wp
After that, try to connect https://YOUR.WORDPRESS/graphql
.
If activation succeeded, you can see following response.
$ curl https://trellis.dev/graphql | jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 206 0 206 0 0 529 0 --:--:-- --:--:-- --:--:-- 529 { "errors": { "message": "Wrong query format or empty query. Either send raw query _with_ Content-Type: 'application/json' header or send query by posting www-form-data with a query="query{}..." parameter" } }
Using by curl
If you want to use by curl, the request is like following code.
$ curl https://trellis.dev/graphql -H "Content-Type: application/json" -d '{"query":"{wp_query { posts(paged: 1 posts_per_page: 10) { title terms (taxonomy:"category") { name slug } } } }"}' | jq .
This request’s GraphQL query is this.
{ "query":"{ wp_query { posts(paged: 1 posts_per_page: 10) { title terms (taxonomy:"category") { name slug } } } }" }
And this request’s response is like this.
{ "data": { "wp_query": { "posts": [ { "title": "Hello world!", "terms": [ { "name": "Uncategorized", "slug": "uncategorized" } ] } ] } } }
Run Another Query
To get pages title and published_date
$ curl https://trellis.dev/graphql -H "Content-Type: application/json" -d '{"query":"{wp_query { posts(paged: 1 posts_per_page: 10 post_type:"page") { title date} } }"}' | jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 669 0 574 100 95 1501 248 --:--:-- --:--:-- --:--:-- 1498 { "data": { "wp_query": { "posts": [ { "title": "Sample Page", "date": "2016-11-07 14:32:39" }, { "title": "Blog", "date": "2011-05-20 18:51:43" }, { "title": "Front Page", "date": "2011-05-20 18:49:43" }, { "title": "Clearing Floats", "date": "2010-08-01 09:42:26" }, { "title": "About The Tests", "date": "2010-07-25 19:40:01" }, { "title": "Level 1", "date": "2007-12-11 16:25:40" }, { "title": "Level 2", "date": "2007-12-11 16:23:33" }, { "title": "Level 3", "date": "2007-12-11 16:23:16" }, { "title": "Page with comments disabled", "date": "2007-09-04 10:48:10" }, { "title": "Page with comments", "date": "2007-09-04 10:47:47" } ] } } }
To get the ID1 Posts title,content, and post status
wp_postというクエリも使えるみたいです。
$ curl https://trellis.dev/graphql -H "Content-Type: application/json" -d '{"query":"{wp_post(ID:1) { title, content, status }}"}' | jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 226 0 172 100 54 620 194 --:--:-- --:--:-- --:--:-- 623 { "data": { "wp_post": { "title": "Hello world!", "content": "Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
n", "status": "publish" } } }
summary
I think GraphQL is very useful to get various contents data.
I want to try more and more 🙂