Create a Blog with WordPress and Gatsby – Part 2

August 12, 2020

Part 2 – The Connection

Now let’s go back to our Gatsby site and get it hooked up to our WordPress site, and pull in some blog posts!

Gatsby Plugins

Open up gatsby-config.js in your text editor.

First I’m going to edit the siteMetadata from the defaults to make the site my own:

siteMetadataThere are so many great Gatsby plugins, but for the sake of this tutorial, we’ll only install what we need to connect WordPress.

Normally I’d install the gatsby-source-wordpress plugin, but since it is going to be updated soon, let’s try out the new one.

Run:
npm install gatsby-source-wordpress-experimental

Next, we’ll go back and edit our gatsby-config.js file and add a .env file to the project. It will be ignored by gitignore.

This is what mine looks like, minus my login info for my WordPress site.
envfile

Here’s what we’ll add to gatsby-config:

gatsby-config

Make sure you add your WordPress site’s graphql link: https://wp.kaleigh.tech/graphql

Next, we’ll need to edit the gatsby-node.js file. I followed what was in the docs and used:

gatsbynodefile

Now our site is hooked up to our WordPress site, but there’s no real way to verify and view anything. So we’ll need to create a blog post template so we can pull in the information.

 

Blog Post Template

Next, we’ll need to set up a new folder called “templates” under src and add blog-post.js

Here are the contents of blog-post.js:

blogpostjs1

So with these new changes, we’re able to pull in the blog posts from our WordPress site and display them. Run gatsby develop to check it out.

When the site loads we won’t see any differences on the home page. We haven’t set up our routes yet. If you go to a URL like this: http://localhost:8000/oops you’ll see a list of all the pages, and should see some of your posts from WordPress:

404page1

See those “fake” posts? Those are coming from WordPress!

Click on them to make sure they’re working. Here’s what mine looks like:

postsshowing

It’s just pulling in the Title and Content, which we set up in our blog-post.js file.

Let’s add the date to our posts. If you go to your GraphQL locally, http://localhost:8000/___graphql  you can see all the options of what we can pull in from a WordPress blog post:

graphql1

Check the date box, and you’ll see this:

datebox

I added in the “MMMM DD, YYYY” and now I see this:

graphqlwithdate

Let’s add that to our site and see what happens:

You may need to restart your server to see the results:

postwithdate

Awesome!

Next, we’ll create a page that will list out all of our blog posts.

Blog Post Page

Under your pages folder, create a new file called blog.js. For now we’ll just pull in the Blog Title, Date and create a link to the post using the slug.

Here’s what the graphql query will look like:

blogpagequery

This will be a list of published posts, to do this we’ll use a map function so we don’t have to worry about updating the page whenever future posts are published.

mapfunction

With these few lines, take a look at http://localhost:8000/blog/ and see what is there:

blogpagewithbullets

Click on the links to make sure they’re working. Now lets clean this up a little and get rid of the bullets.

For simplicity sake, we’ll create a new CSS file in the component folder named style.css and add:

ul {
list-style-type: none;
}

We’ll also need to import the stylesheet in our layout.js file:

importcss

And now it should look a lot better:

blogpagefinal

Finally, let’s add a link to this page on the home page. I just added this line:

<Link to="/blog">Like this blog</Link>

And now we’re in business!

homepage

Hopefully, yours looks the same, if not please let me know! You can also take a look at my GitHub repo for this series as well.