•  


GitHub - colbyfayock/next-wordpress-starter: ?? Bring WordPress to the static world with Next.js
Skip to content

colbyfayock/next-wordpress-starter

Repository files navigation

Next.js WordPress Starter

All Contributors

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

?? Quick Start

Deploy to Netlify Deploy with Vercel

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"

In some cases, the above may not work. Change it as follows:

WORDPRESS_GRAPHQL_ENDPOINT="http://yourhost.com/index.php?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 without any 3rd party services 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

You can also optionally enable Yoast SEO plugin support to supercharge your SEO! (See below)

Check out the Issues for what's on deck!

Want something a little more basic ? Check out my other starter with an MVP setup to get up and running with WPGraphQL in WordPress: https://github.com/colbyfayock/next-wpgraphql-basic-starter

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 the contents of the variable with your WPGraphQL endpoint. By default, it should resemble [Your Host]/graphql .

Note: environment variables can optionally be statically configured in next.config.js

All Environment Variables

Name Required Default Description
WORDPRESS_GRAPHQL_ENDPOINT Yes - WordPress WPGraphQL endpoint (ex: host.com/graphl)
WORDPRESS_MENU_LOCATION_NAVIGATION No PRIMARY Configures header navigation Menu Location
WORDPRESS_PLUGIN_SEO No false Enables SEO plugin support (true, false)

Please note some themes do not have PRIMARY menu location.

Development

To start the project locally, run:

yarn dev
#
 or

npm run dev

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

ESLint extension for Visual Studio Code

It is possible to take advantage of this extension to improve the development experience. To set up the ESLint extension in Visual Studio Code add a new folder to the root .vscode . Inside add a file settings.json with the following content:

{
  
"editor.formatOnSave"
: 
false
,
  
"editor.codeActionsOnSave"
: {
    
"source.fixAll.eslint"
: 
true

  }
}

With this file ESLint will automatically fix and validate syntax errors and format the code on save (based on Prettier configuration).

Deployment

Netlify

There are two options as to how you can deploy this project to Netlify:

Essential Next.js Plugin should be provided as an option when you're first importing a project based on this starter. If it's not, you can install this plugin using the Netlify Plugins directory. This will allow the project to take full advantage of all native Next.js features that Netlify supports with this plugin.

Exporting the project lets Next.js compile the project into static assets including HTML files. This allows you to deploy the project as a static site directly to Netlify just like any other site. You can do this by adding next export to the end of the build command inside package.json (ex: next build && next export ).

Regardless of which option you choose, you can configure your environment variables either when creating your new site or by navigating to Site Settings > Build & Deploy > Environment and triggering a new deploy once added.

Deploy to Netlify

Vercel

Given Next.js is a Vercel-supported project, you can simply import the project as a new site and configure your environment variables by either adding them during import or by navigating to Settings > Environment Variables and triggering a new build once added.

Deploy with Vercel

?? 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.

Name Required Description
homepage Yes Homepage or hostname used to construct full URLs (ex Open Graph)
  • 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 like a typical WordPress theme. Those include:

Name Usage
Site Language lang attribute on the <html> tag
Site Title Homepage header, page metadata
Tagline Homepage subtitle

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

Images

This Starter doesn't currently 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

?? Plugins

Yoast SEO

The Yoast SEO plugin is partially supported including most major features like metadata and open graph customization.

Requirements

  • Yoast SEO plugin
  • Add WPGraphQL SEO plugin

To enable the plugin, configure WORDPRESS_PLUGIN_SEO to be true either as an environment variable or within next.config.js.

?? Bootstrapped with Next.js WordPress Starter

Examples of websites that started off with Next.js WordPress Starter

?? Sponsors

WordPress hosting for the public-facing project provided by WP Engine .

WP Engine Logo

? Contributors

Thanks goes to these wonderful people ( emoji key ):

Colby Fayock
Colby Fayock

?? ??
Kevin Cunningham
Kevin Cunningham

??
Guillermo Angulo
Guillermo Angulo

??
Hein Snyman
Hein Snyman

??
Grische
Grische

??
Jatin Rathee
Jatin Rathee

??
Dave
Dave

??
Brad Garropy
Brad Garropy

??
Fábio Sales
Fabio Sales

??
Leonardo Losoviz
Leonardo Losoviz

??
Avneesh Agarwal
Avneesh Agarwal

??
Phattarapol L.
Phattarapol L.

??
Peter Cruckshank
Peter Cruckshank

??
Shane O'Grady
Shane O'Grady

??
Nick Gaswirth
Nick Gaswirth

??
alexandruvisan19
alexandruvisan19

??
Ritik Chourasiya
Ritik Chourasiya

??
Rick Knowlton
Rick Knowlton

??
Jedidiah Amaraegbu
Jedidiah Amaraegbu

??

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

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본