Create a page in Gatsby to show WordPress blog post previews

Jason Lengstorf
InstructorJason Lengstorf
Share this video with your friends

Social Share Links

Send Tweet
Published 4 years ago
Updated 3 years ago

If we want to show a list of our posts for easy browsing, we need to create a blog preview page. In this video, we’ll create a new page component in Gatsby and write the query and code to display WordPress blog post previews.

Jason Lengstorf: [0:00] To show a list of our latest posts, we're going to create a new page called blog.js. Inside of it, we're going to import React from 'react'. We also need { graphql , Link } from 'gatsby'. Then we're going to import our Layout from '../components/layout'.

[0:24] The first thing we need to do is, we need to load our post data. We're going to export a const called query. That's going to use graphql. Inside of graphql we are going to run a query that gets into wpgraphql posts. We want nodes, and we're going to get the id, the title, the uri, and the excerpt.

[0:50] Below that, we're going to create a new component called Blog that is going to receive the data which is the result of our query. Inside, we're going to extract the posts from that data. We'll go data.wpgraphql.posts.nodes. Again, this just drills down, data is the result of the query, we go wpgraphql.posts.nodes.

[1:13] Then below here, we can return a Layout. Inside of our Layout, we want to map over our posts. We will just do a post.map(), get each post, and then inside of it, we will return an article component with a key of the post.id so that we have a way for React to track which element is which.

[1:37] We'll use an <h2> because we don't want to have more than one <h1> on any given page, and we will use the Link component to link to it.

[1:46] We're going to run to blog and the posts.uri, and our dangerouslySetInnerHTML, because that title might contain some HTML encoded entities, so __html: post.title. Next, we're going to have a div which is also going to have dangerouslySetInnerHTML, and that will be the post.excerpt.

[2:23] Export default Blog, save it, and then let's head out to our blog page. If we click into them, we can see that they are working properly.

egghead
egghead
~ an hour ago

Member comments are a way for members to communicate, interact, and ask questions about a lesson.

The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io

Be on-Topic

Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.

Avoid meta-discussion

  • This was great!
  • This was horrible!
  • I didn't like this because it didn't match my skill level.
  • +1 It will likely be deleted as spam.

Code Problems?

Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context

Details and Context

Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!

Markdown supported.
Become a member to join the discussionEnroll Today