Created
July 27, 2017 22:54
-
-
Save iamkevingreen/511904c1f5477609017b165effc5332b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const _ = require(`lodash`) | |
const Promise = require(`bluebird`) | |
const path = require(`path`) | |
const slash = require(`slash`) | |
// Implement the Gatsby API “createPages”. This is | |
// called after the Gatsby bootstrap is finished so you have | |
// access to any information necessary to programatically | |
// create pages. | |
// Will create pages for Wordpress pages (route : /{slug}) | |
// Will create pages for Wordpress posts (route : /post/{slug}) | |
exports.createPages = ({ graphql, boundActionCreators }) => { | |
const { createPage } = boundActionCreators | |
return new Promise((resolve, reject) => { | |
// The “graphql” function allows us to run arbitrary | |
// queries against the local Wordpress graphql schema. Think of | |
// it like the site has a built-in database constructed | |
// from the fetched data that you can run queries against. | |
// ==== PAGES (WORDPRESS NATIVE) ==== | |
graphql( | |
` | |
{ | |
allWordpressPage { | |
edges { | |
node { | |
id | |
slug | |
title | |
content | |
status | |
template | |
childWordpressAcfField { | |
internal { | |
content | |
} | |
} | |
} | |
} | |
} | |
} | |
` | |
) | |
.then(result => { | |
if (result.errors) { | |
console.log('errors', result.errors) | |
reject(result.errors) | |
} | |
// Create Page pages. | |
const pageTemplate = path.resolve('./src/templates/page.js') | |
// We want to create a detailed page for each | |
// page node. We'll just use the Wordpress Slug for the slug. | |
// The Page ID is prefixed with 'PAGE_' | |
_.each(result.data.allWordpressPage.edges, edge => { | |
// Gatsby uses Redux to manage its internal state. | |
// Plugins and sites can use functions like "createPage" | |
// to interact with Gatsby. | |
console.log('edgy', JSON.parse(edge.node.childWordpressAcfField.internal.content)) | |
createPage({ | |
// Each page is required to have a `path` as well | |
// as a template component. The `context` is | |
// optional but is often necessary so the template | |
// can query data specific to each page. | |
path: `/${edge.node.slug}/`, | |
component: slash(pageTemplate), | |
context: { | |
id: edge.node.id, | |
title: edge.node.title, | |
content: edge.node.content, | |
slug: edge.node.slug, | |
acf: JSON.parse(edge.node.childWordpressAcfField.internal.content) | |
// acf: edge.node.acf | |
}, | |
}) | |
}) | |
resolve() | |
}) | |
// ==== END PAGES ==== | |
// ==== POSTS (WORDPRESS NATIVE AND ACF) ==== | |
// .then(() => { | |
// graphql( | |
// `{ | |
// allSitePost { | |
// edges { | |
// node { | |
// id | |
// slug | |
// status | |
// template | |
// format | |
// } | |
// } | |
// } | |
// | |
// } | |
// ` | |
// ).then(result => { | |
// if (result.errors) { | |
// console.log(result.errors) | |
// reject(result.errors) | |
// } | |
// const postTemplate = path.resolve('./src/templates/post.js') | |
// // We want to create a detailed page for each | |
// // post node. We'll just use the Wordpress Slug for the slug. | |
// // The Post ID is prefixed with 'POST_' | |
// _.each(result.data.allSitePost.edges, edge => { | |
// createPage({ | |
// path: `/post/${edge.node.slug}/`, | |
// component: slash(postTemplate), | |
// context: { | |
// id: edge.node.id, | |
// }, | |
// }) | |
// }) | |
// resolve() | |
// }) | |
// }) | |
// ==== END POSTS ==== | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment