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.

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.

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.

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.

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.

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.

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 Conference 2022React Advanced Conference 2022
25 min
A Guide to React Rendering Behavior
Top Content
React is a library for "rendering" UI from components, but many users find themselves confused about how React rendering actually works. What do terms like "rendering", "reconciliation", "Fibers", and "committing" actually mean? When do renders happen? How does Context affect rendering, and how do libraries like Redux cause updates? In this talk, we'll clear up the confusion and provide a solid foundation for understanding when, why, and how React renders. We'll look at: - What "rendering" actually is - How React queues renders and the standard rendering behavior - How keys and component types are used in rendering - Techniques for optimizing render performance - How context usage affects rendering behavior| - How external libraries tie into 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 new web framework from the creators of React Router that helps you build better, faster websites through a solid understanding of web fundamentals. Remix takes care of the heavy lifting like server rendering, code splitting, prefetching, and navigation and leaves you with the fun part: building something awesome!
React Compiler - Understanding Idiomatic React (React Forget)
React Advanced Conference 2023React Advanced Conference 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
Top Content
React provides a contract to developers- uphold certain rules, and React can efficiently and correctly update the UI. In this talk we'll explore these rules in depth, understanding the reasoning behind them and how they unlock new directions such as automatic memoization. 
Using useEffect Effectively
React Advanced Conference 2022React Advanced Conference 2022
30 min
Using useEffect Effectively
Top Content
Can useEffect affect your codebase negatively? From fetching data to fighting with imperative APIs, side effects are one of the biggest sources of frustration in web app development. And let’s be honest, putting everything in useEffect hooks doesn’t help much. In this talk, we'll demystify the useEffect hook and get a better understanding of when (and when not) to use it, as well as discover how declarative effects can make effect management more maintainable in even the most complex React apps.
Routing in React 18 and Beyond
React Summit 2022React Summit 2022
20 min
Routing in React 18 and Beyond
Top Content
Concurrent React and Server Components are changing the way we think about routing, rendering, and fetching in web applications. Next.js recently shared part of its vision to help developers adopt these new React features and take advantage of the benefits they unlock.In this talk, we’ll explore the past, present and future of routing in front-end applications and discuss how new features in React and Next.js can help us architect more performant and feature-rich applications.
(Easier) Interactive Data Visualization in React
React Advanced Conference 2021React Advanced Conference 2021
27 min
(Easier) Interactive Data Visualization in React
Top Content
If you’re building a dashboard, analytics platform, or any web app where you need to give your users insight into their data, you need beautiful, custom, interactive data visualizations in your React app. But building visualizations hand with a low-level library like D3 can be a huge headache, involving lots of wheel-reinventing. In this talk, we’ll see how data viz development can get so much easier thanks to tools like Plot, a high-level dataviz library for quick & easy charting, and Observable, a reactive dataviz prototyping environment, both from the creator of D3. Through live coding examples we’ll explore how React refs let us delegate DOM manipulation for our data visualizations, and how Observable’s embedding functionality lets us easily repurpose community-built visualizations for our own data & use cases. By the end of this talk we’ll know how to get a beautiful, customized, interactive data visualization into our apps with a fraction of the time & effort!

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 Conference 2021React Advanced Conference 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 Conference 2021React Advanced Conference 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 Conference 2021React Advanced Conference 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