Skip to main content

Architecture

This describes how information is passed to and from the frontend, through Next.js, back to WordPress.

Overall Architecture​

Next.js, as used in this starter, is not a purely static site. Functions in the /public/api folder are executed on the Next.js "server" where the frontend is hosted, giving them access to all the environment variables available to the build process.

/-----------\
| WordPress |
\-----------/
|
~~~~~~~~~~~~~
|
/-----------\
| Next.js |
\-----------/
|
/-----------\
| Browser |
\-----------/

Handling dynamic data​

Occasionally, the browser will need to make a request for data. This includes loading additional posts on archive pages and posting WordPress comments. Because the browser may not have access to WordPress (if WordPress is behind a firewall or other authorization mechanism), any dynamic information for the browser must pass through a Next.js function.

Functions and methods to be executed in the browser are found in the /lib/frontend folder. The actual endpoints are in /public/api.

The basic steps for creating a feature using dynamic data are:

  1. Create a Next.js API Route that will handle the request to WordPress. This page can and should use functions available to a normal Next.js page, including using functions in /lib/wordpress.
  2. Add the new API route to wpDataEndpoints in /lib/wordpress/connector.js
  3. Create a new GraphQL query and corresponding function in /lib/frontend/wp. Follow the other features there as an example, particularly the use of @rest() in the GraphQL query
  4. Use this frontend function in the actual displayed page.