API-first Development with Headless WordPress

Rate this content
Bookmark

When the burden of rendering is removed from WordPress, it becomes an open source API platform. With a few plugins like WPGraphQL, you can create an extensible backend for your React apps to consume which enables modern architectures and development practices in WordPress.

This talk has been presented at React Summit Remote Edition 2021, check out the latest edition of this React Conference.

FAQ

API-first development with headless WordPress involves using WordPress as a backend content management system while interacting with its data through APIs without using the WordPress frontend. This allows developers to use modern frontend technologies, like React, to build the user interface.

WordPress is chosen for API development due to its widespread use (powering 40% of the web), familiarity among content creators, extensive plugin ecosystem, and its open-source nature, making it a versatile and cost-effective option for developers.

Essential tools for API-first development with WordPress include the WPGraphQL plugin for creating GraphQL APIs, the Custom Post Type UI, and Advanced Custom Fields plugins for custom data management. Additionally, the headless framework from WP Engine can be used to facilitate the development.

Headless WordPress benefits developers not skilled in PHP by allowing them to use languages and technologies like JavaScript, TypeScript, and React instead, focusing on the frontend while still leveraging WordPress's robust backend capabilities.

Resources for learning about headless WordPress include the developer portal at developers.wp-engine.com, the WP Engine GitHub repository for the headless framework, and Matt Landers' GitHub repository where example code and projects are shared.

Yes, you can build and deploy a site with headless WordPress using WP Engine's Atlas platform, which supports deploying both the WordPress backend and various frontend frameworks like Next.js, allowing for seamless development and deployment processes.

WPGraphQL plays a crucial role in headless WordPress development by providing an efficient GraphQL API layer that allows developers to retrieve and manage WordPress content more effectively than the traditional REST API.

Developers can manage custom content types in headless WordPress by using the Custom Post Type UI to define new types, and Advanced Custom Fields to add custom fields. These can be made accessible via GraphQL using the WPGraphQL plugin.

Matt Landers
Matt Landers
33 min
14 May, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
This Talk discusses API-first development with headless WordPress, highlighting its benefits and the availability of resources. It explores the use of plugins and frameworks like WPGraphQL and the headless framework from WP Engine to create custom post types and make GraphQL calls. The Talk also covers building websites, querying and caching data, deploying apps with the Atlas platform, and improving user experience. It touches on authentication, efficiency, backend resources, and WooCommerce integration in headless WordPress, as well as WordPress accessibility and SEO optimization.

1. API-first development with headless WordPress

Short description:

Hello, React Summit. In this session, we'll talk about API-first development with headless WordPress. WordPress is a great choice for API development because it's widely used, free, and open source. It's also great for headless development and you don't need to know PHP. We have resources available on GitHub and developers.wp-engine.com. Let's dive right in and build a site that lists developers on Twitter based on their language.

Hello, React Summit. I'm Matt Landers, head of developer relations at WP Engine. And in this session, we're gonna talk about API-first development with headless WordPress. So our agenda is really simple. I'm gonna do some talky talk, I'm gonna talk to you a little bit about what we're gonna do, and then we're gonna do a demo.

We only have 20 minutes, so I don't wanna spend too much time on talking. I wanna show you how to actually do API-first development with WordPress. So you may be thinking, why WordPress? There's a lot of different options out there for you to do API development. Why would I use WordPress? Well one really good reason is that 40% of the web is WordPress and that is growing. And what that means is that your users probably already know WordPress. So they'll be comfortable in the admin panel, like your content producers and marketers will know how to get around WordPress, which is a benefit to you that they already know the software. It's also free and open source, so why not take advantage of that? And there's a lot of extensions already built into WordPress that make it really great for headless. And headless WordPress is awesome, so you don't need to know PHP. I think that that's some people's fear is like, I don't want to do PHP, so I'm not going to do WordPress, especially at an event like this where everyone's a React developer. Well, you'll be happy to know I don't know PHP and I do headless WordPress almost every day. I'm a TypeScript, JavaScript developer and I spend my time in Node, TypeScript, Deno, those type of places. I don't do PHP. You don't have to either.

For this session, there's a few resources that are available to you. The code that I'm going to be using and deploying in this session can be found on my GitHub at matt-lander or slash followa.dev repository. The framework that we're going to be using for headless WordPress is from WP Engine. So if you go to the WP Engine GitHub, you'll see a headless-framework open source project. That is what we're going to use to kick off our projects in getting going. You can also go to developers.wp-engine.com and get a ton of resources from me and my team on headless WordPress and how to do specific things. Let's dive right in and do API development with WordPress. For this demo, we're going to build a site that lists out different developers on Twitter that we can go follow. We want to be able to find developers based on the language that they typically use because if I'm a developer and I want to follow another developer, I'm probably looking for somebody that works in the language and frameworks or technologies that I know so that I can get more information and learn more about it. That's what we're going to build on the site. We're going to use headless WordPress to be the platform that we use for our API and also where our users will be able to go in and enter in the data for the website. What I've done is I've used Local to spin up a WordPress site on my local machine.

2. Developers and GraphQL

Short description:

You can use LocalWP.com to quickly spin up WordPress sites and work on them locally. Install the WPGraphQL plugin for a better API experience with WordPress. The Custom Post Type UI and Advanced Custom Fields plugins turn WordPress into an API building platform. With the headless framework from WP Engine, we can make GraphQL calls and get structured data about developers. Let's create a custom post type for developers and configure it to show up in GraphQL.

You can get this at LocalWP.com. It's really great for quickly spinning up sites in WordPress and working on them locally. Then you can push them up somewhere live.

All right. So I've already got this running and I also have some plugins that I always use already installed. The number one plugin that I always use is WPGraphQL. You've got to have that because you need a nice API whenever you're going to work with WordPress. There is a REST API already but I find it much easier to use a GraphQL API, especially since there are so many relationships in our data.

There's also two other plugins that really turn WordPress into an API building platform. That would be the Custom Post Type UI and Advanced Custom Fields. There's also extensions for those two for WPGraphQL that I have installed as well, and I have the headless framework from WP Engine installed as well, which is a plugin.

Let's look at what that gives us first. If we go to the GraphQL playground here, we'll see that we can make GraphQL calls straight into our data and get content out. By default, WordPress has Posts and Pages. This content comes out as raw HTML as we can see here. On the front end, and from an API, that's not really what I want to get all the time. For instance, in this case, I want to get a list of developers and some structured data about them. I want to build an API that's going to give me the data back on the front end that looks the way I want it to look.

So, let's do that. The first thing that we're going to do is create that custom content type, which in WordPress is called a custom post type. We're going to call it developers, and our plural label will be developers and developer. We'll see why we need that in just a second. We'll scroll down and we're going to get rid of some of the default things that show up on this post. We only want the title, and we want this to show up in GraphQL. So, I got to tell it how I want it to show up in GraphQL. I'm going to add that post type. As soon as I add that, you'll notice that there's a developer section in our menu now, which is cool. So, now I have a way that I can go and see the developers that I've entered. Now I've had some from previously, and they show back up. So I don't want to have to enter those in again.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

A Guide to React Rendering Behavior
React Advanced 2022React Advanced 2022
25 min
A Guide to React Rendering Behavior
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Building Better Websites with Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Building Better Websites with Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
React Compiler - Understanding Idiomatic React (React Forget)
React Advanced 2023React Advanced 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
Top Content
Watch video: React Compiler - Understanding Idiomatic React (React Forget)
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Using useEffect Effectively
React Advanced 2022React Advanced 2022
30 min
Using useEffect Effectively
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Routing in React 18 and Beyond
React Summit 2022React Summit 2022
20 min
Routing in React 18 and Beyond
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
(Easier) Interactive Data Visualization in React
React Advanced 2021React Advanced 2021
27 min
(Easier) Interactive Data Visualization in React
Top Content
This Talk is about interactive data visualization in React using the Plot library. Plot is a high-level library that simplifies the process of visualizing data by providing key concepts and defaults for layout decisions. It can be integrated with React using hooks like useRef and useEffect. Plot allows for customization and supports features like sorting and adding additional marks. The Talk also discusses accessibility concerns, SSR support, and compares Plot to other libraries like D3 and Vega-Lite.

Workshops on related topic

React Performance Debugging Masterclass
React Summit 2023React Summit 2023
170 min
React Performance Debugging Masterclass
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
Concurrent Rendering Adventures in React 18
React Advanced 2021React Advanced 2021
132 min
Concurrent Rendering Adventures in React 18
Top Content
Featured WorkshopFree
Maurice de Beijer
Maurice de Beijer
With the release of React 18 we finally get the long awaited concurrent rendering. But how is that going to affect your application? What are the benefits of concurrent rendering in React? What do you need to do to switch to concurrent rendering when you upgrade to React 18? And what if you don’t want or can’t use concurrent rendering yet?

There are some behavior changes you need to be aware of! In this workshop we will cover all of those subjects and more.

Join me with your laptop in this interactive workshop. You will see how easy it is to switch to concurrent rendering in your React application. You will learn all about concurrent rendering, SuspenseList, the startTransition API and more.
React Hooks Tips Only the Pros Know
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
React Hooks Tips Only the Pros Know
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
The addition of the hooks API to React was quite a major change. Before hooks most components had to be class based. Now, with hooks, these are often much simpler functional components. Hooks can be really simple to use. Almost deceptively simple. Because there are still plenty of ways you can mess up with hooks. And it often turns out there are many ways where you can improve your components a better understanding of how each React hook can be used.You will learn all about the pros and cons of the various hooks. You will learn when to use useState() versus useReducer(). We will look at using useContext() efficiently. You will see when to use useLayoutEffect() and when useEffect() is better.
React, TypeScript, and TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript, and TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way we'll show test-driven development and emphasize tips-and-tricks in the IDE.
Web3 Workshop - Building Your First Dapp
React Advanced 2021React Advanced 2021
145 min
Web3 Workshop - Building Your First Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
In this workshop, you'll learn how to build your first full stack dapp on the Ethereum blockchain, reading and writing data to the network, and connecting a front end application to the contract you've deployed. By the end of the workshop, you'll understand how to set up a full stack development environment, run a local node, and interact with any smart contract using React, HardHat, and Ethers.js.
Designing Effective Tests With React Testing Library
React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Top Content
Featured Workshop
Josh Justice
Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn