/next-wordpress-starter

📝 Bring WordPress to the static world with Next.js

Primary LanguageJavaScriptMIT LicenseMIT

Next.js WordPress Starter

All Contributors

Scaling WordPress with the power of Next.js and the static web!

⚡️ Quick Start

Requirements

yarn create next-app -e https://github.com/colbyfayock/next-wordpress-starter
# or
npx create-next-app -e https://github.com/colbyfayock/next-wordpress-starter

Add an .env.local file to the root with the following:

WORDPRESS_GRAPHQL_ENDPOINT="http://wordpressite.com/graphql"

🚀 Getting Started

What is this and what does it include?

The goal of this project is to take WordPress as a headless CMS and use Next.js to create a static experience that can be deployed anywhere.

The hope is to build out as many features as we can to support what's typically expected from an out of the box theme on WordPress. Currently, those features include:

Additionally, the theme is expected to be SEO friendly and performant out of the box, including:

  • Unique page titles
  • Unique descriptions
  • Open Graph tags

Check out the Issues for what's on deck!

Requirements

Environment

This project makes use of WPGraphQL to query WordPress with GraphQL. In order to make that request to the appropriate endpoint, we need to set a environment variable to let Next.js know where to request the site information from.

Create a new file locally called .env.local and add the following:

WORDPRESS_GRAPHQL_ENDPOINT="[WPGraphQL Endpoint]"

Replace [host] with your the home URL of your WordPress instance.

Development

To start the project locally, run:

yarn dev
# or
npm run dev

The project should now be available at http://localhost:3000!

🛠 Configuring Your Project

package.json

In order to avoid an additional configuration file, we take advantage of some built-in properties of package.json to configure parts of the website.

  • homepage: Setting the homepage property will update instances where the full URL is required such as Open Graph tags

WordPress

This project aims to take advantage of as many built-in WordPress features by default. Those include:

  • Site Title: Used for the homepage header as well as page metadata
  • Tagline: Used on the homepage for the header subtitle
  • Site Language: Used on the <html> tag to set the lang attribute

There is some specific WordPress configuration required to allow for the best use of this starter.

Images

By default, this Starter doesn't provide any mechanisms for dealing with image content from WordPress. The images are linked to "as is", meaning if the image is uploaded via the WordPress interface, the image will be served from WordPress.

To serve the images statically, you have a few options.

Jetpack

By enabling the Image Accelerator from Jetpack, your images will automatically be served statically and cached via the wp.com CDN. This feature comes free with the basic installation of Jetpack, requiring only that you connect the WordPress site to the Jetpack service.

Jetpack CDN

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Colby Fayock

💻 📖

Kevin Cunningham

💻

Guillermo Angulo

💻

Hein Snyman

💻

Grische

🔧

Jatin Rathee

💻

This project follows the all-contributors specification. Contributions of any kind welcome!