Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:04
Welcome to a new episode of
0:06
Frontend Happy Hour podcast. We
0:09
are on episode 188 and have
0:12
not done a dedicated episode
0:14
on WordPress. I am amazed.
0:16
I can't believe we haven't done
0:18
this. So I'm really excited to
0:21
actually dive into it. I've spent
0:23
a lot of years throughout my
0:25
career building on WordPress, you know,
0:27
building websites, applications, themes, plugins,
0:29
whatever it be, but it has been
0:31
many years since I've touched it. And
0:34
so in this episode, we are joined by
0:36
Jason to help us talk through insights about
0:38
WP GraphQL. And
0:41
so we're going to learn more about the APIs
0:43
around WordPress. And yeah,
0:45
that will be a fun topic to dive into. Jason,
0:48
do you want to give an introduction of
0:50
who you are, what you do, and what
0:53
your favorite Happy Hour beverage is? Man, yeah,
0:55
my name is Jason Ball, creator
0:58
maintainer WP GraphQL, which is a free
1:00
open source WordPress plugin that provides
1:02
GraphQL API for WordPress. I'm
1:06
principal engineer at WP
1:09
Engine, where I work on
1:11
open source software, primarily
1:13
WP GraphQL, but we have other open source
1:15
projects I help with, like a
1:17
front end for a next
1:19
base framework called Foust
1:21
JS. So I
1:23
help a little bit with that and then
1:25
maintain some extension plugins for WP GraphQL, like
1:27
WP GraphQL for advanced custom fields, for
1:30
example. But and then my favorite
1:32
Happy Hour, I don't drink alcohol, so
1:35
I'll go with Dr. Pepper, that would
1:37
be my favorite beverage. Right
1:39
on. I mean, that's the thing too, is like,
1:41
I feel like more and more people aren't drinking alcohol. So
1:44
it's like, this is good. So
1:46
having various beverages of choice is
1:48
great. All right. I only
1:50
have Cole and myself, but Cole, do you
1:53
want to give an introduction? Hi everyone. My
1:55
name is Cole Turner. I'm a software engineer
1:57
at Netflix and I've had a few encounters.
2:00
with WordPress when I was in college. Nice.
2:03
Yeah, it's a great platform. So I'm
2:05
excited for that. And I'm your host
2:07
Ryan Burgess. This episode
2:09
is sponsored by our friends
2:11
at porkbun.com. It's named the
2:14
number one domain registrar by
2:16
USA Today. Porkbun is an
2:18
excellent domain registrar for tech
2:20
professionals offering domain extensions like
2:22
.app, .dev, and .foo. The
2:25
best part is you get the great
2:27
pricing, only $1 for
2:29
the first year for .app, .dev,
2:31
and .foo domains. Which if
2:33
you're like me, if you like
2:35
to register a domain for every
2:37
great idea you have, Porkbun can
2:39
help with that. Free with every
2:41
domain, you get Whois privacy, SSL,
2:43
certificates, web and email hosting trials,
2:46
and more. Why pay for things
2:48
you don't need and should get
2:50
for free? Backed by professionalized five-star
2:52
support, 365 a
2:54
year, Porkbun has a simple user
2:57
interface you can manage everything about
2:59
your new domain from one place.
3:01
Get .app, .dev, or .foo domains
3:03
at Porkbun for only $1 for the
3:05
first year. Well, let's dive
3:07
into WordPress. Maybe let's start actually, like
3:10
I was gonna start and say like
3:12
what's WPGraphQL, which we should get to,
3:14
but even let's get a baseline of
3:16
like if someone hasn't used WordPress,
3:18
like the three of us have, which is awesome,
3:21
what is WordPress? Like how do we even define
3:23
that? Let's start there. Yeah,
3:25
I mean, yeah, WordPress is a
3:27
content management system. So it's a
3:30
web-based application, right? It's where users
3:32
can log into it and they can
3:34
publish content. It powers somewhere
3:37
in 45-ish percent of the web
3:39
right now. So pretty
3:42
much any...there's a good chance
3:44
on a daily basis you're visiting a site
3:46
that is powered by WordPress. Some of the
3:49
top sites, you know, publishing
3:51
sites like
3:53
NASA actually just relaunched on WordPress,
3:55
like NASA and their
3:58
science website, things like that. So,
4:01
yeah, it's a open
4:04
source CMS, so developers can download
4:06
it and extend it and write
4:08
code to do whatever they want.
4:10
There's a massive plugin ecosystem for
4:12
it. So you can kind
4:14
of turn it into whatever you need it to be
4:17
for your project. But yeah,
4:19
it's all web-based and yeah, let's
4:21
use this direct content and publish it to web. Yeah,
4:23
and I think that's a big thing too, what you
4:25
hit on is like the plugins. It's
4:27
extendable. You can write themes, you can download
4:29
themes, you can download plugins, integrate it, write
4:32
your own. I think that's what's been so
4:34
powerful with it. It just gives a lot
4:36
of flexibility for people to do what they
4:38
want with it. Yeah, so it's, it has,
4:41
I'm surprised. I didn't realize how much of
4:43
the web is taken over by WordPress. I
4:45
mean, I'm not surprised, but like didn't really
4:47
realize how much is being
4:49
used by WordPress. But I have
4:51
seen it leverage for so many things. Even
4:53
just, there's things that I've had to do
4:56
with it over the years that I didn't
4:58
even think possible. Like it was
5:00
like, why are we extending WordPress so hard?
5:03
But it's cool to see what you can do with it. On
5:05
that note, I guess, let's say it's me
5:07
and I haven't used WordPress in a while.
5:10
What are some typical use cases for
5:12
a developer to choose WordPress over something
5:15
else? Yeah, so
5:17
I think access is a big one. It's, first
5:20
off, it's free, right? So if you have
5:23
limited resources or whatever, like you
5:25
can just go download it and start using it. It's
5:28
very, like we talked about, there's a massive plug-in ecosystem
5:30
so you can extend it to do almost
5:32
anything you can imagine. Like it
5:35
can do, is it necessarily the best job? Maybe,
5:37
maybe not, I don't know. But like it can
5:39
do it almost certainly. So access
5:41
is a big one. Cost
5:43
is a big one. They say
5:45
it's free like a dog, right? Like you get
5:47
a dog given to you, but there is cost
5:50
associated with it still. So it's not like, it's
5:52
not like truly free,
5:54
but like the software itself is you can
5:56
start prototyping with it with no cost to
5:58
get started. But Yeah, I
6:00
think those are some big ones. There's access to
6:02
it and the limited, you know, reduced
6:04
cost of getting started with it. So that's
6:06
a big thing. And
6:08
then yeah, like 40 something percent of the
6:10
web is using it. So there's lots of
6:13
examples out there of like, oh,
6:16
I want to accomplish this. Can it be done
6:18
on WordPress? Well, here's an example. Yeah, of course.
6:20
So yeah, yeah. Yeah,
6:23
I mean, it's been around for years
6:26
too. Like the adoption is high. It's
6:28
grown significantly in, you know, bettering, making
6:30
it a lot easier for people to
6:32
leverage. You can have it hosted for
6:35
you. Like a lot of hosting platforms
6:37
have it available for you. Obviously WordPress
6:39
itself is available to just have it
6:42
online and leverage that. But
6:44
you can also host it yourself. You can move it,
6:46
migrate it wherever you want to put it, which
6:48
is pretty cool too and really flexible. Yeah,
6:51
I would say the community and documentation is
6:53
huge too, right? Like, so if you do
6:55
feel like you're stuck, if
6:57
you're working on some custom application for a
7:00
company and they're the only company running that
7:02
software, if you get stuck, it can
7:04
be hard to get out of that, right? But
7:06
with WordPress, high chance
7:09
somebody else has run into the same situation
7:11
even Kerrigan can help you, right? So the
7:14
community and documentation is massive. I feel
7:16
like it's one of
7:18
the most documented pieces of software out there
7:20
in my opinion. Both good and bad, because
7:22
there's outdated docs too and can kind of
7:24
send you down the wrong trail sometimes too.
7:27
Or there's bad docs or whatever, but it
7:29
is very highly documented. If you're searching
7:31
for something, you're gonna find somebody
7:34
else who's written about it. So that's a
7:36
positive, I think. I love
7:38
that. Because I think about where I started
7:40
in my career. I did a lot of
7:42
WordPress very early on because of exactly what
7:45
you're saying, Jason, where if you're
7:47
running into use cases you've never built before,
7:50
they could be old, they could be new, they
7:52
could be all over the place, but it's good
7:54
to have options and it's good to have other
7:56
people's work to influence your work. And I think
7:58
that is where we're going. WordPress is a
8:00
great tool for many people who are
8:04
across different skill sets because you
8:06
can do that customization as you need to
8:09
see it fit or potentially maybe
8:11
you don't need all that and you get a lot
8:13
out of the box for free. Yeah,
8:15
great points. Well, let's move
8:18
to WP GraphQL. All
8:20
right, what is WP
8:22
GraphQL and how does it differ
8:25
from traditional APIs from WordPress? Yeah,
8:28
so typically when you think of WordPress
8:30
as being a content management system, it's
8:32
what the word monolithic is thrown
8:34
around a lot. So it does everything, right?
8:36
It's one piece of software that does the
8:38
content management, but it also does the presentation
8:41
of the website for you. It has a
8:43
template system and all this stuff, right? So it's
8:46
monolithic meaning one big application
8:49
and a lot of
8:51
organizations find themselves investing
8:53
in training folks that produce content
8:56
and they want them to continue using WordPress because that's
8:58
a big cost, right? I
9:00
used to work for a newspaper publisher and we
9:02
had hundreds of people trained to publish content in
9:05
WordPress. So switching off of that
9:07
would be a massive investment, but the
9:09
front end, what's
9:12
presenting the content on
9:14
the front end, WordPress doesn't always make sense
9:16
to do that. We had native iOS
9:18
and Android apps, for example, and
9:21
you're not running PHP on phones. So like
9:23
having a WordPress template as an iOS app
9:25
doesn't make sense. So you need
9:27
to get the data from the CMS.
9:29
So we have the folks trained
9:31
to publish content, but we
9:34
need it for the web, of course, but
9:36
also for native iOS and Android apps, but
9:38
also for print. Like it's a
9:40
web first world, right? We're publishing stories on
9:42
the web and then preparing it to print.
9:45
So having access to
9:47
the data outside of how it's
9:49
rendered for the web was an important
9:51
thing. So WordPress
9:54
has a REST API, which is the REST
9:57
APIs are like an
10:00
app. endpoint per resource is kind
10:02
of how it works. So you would hit an endpoint like,
10:04
you know, your WordPress site slash posts,
10:06
and you would get a list of
10:09
posts or slash post ID one, you
10:12
know, and that'll give you an individual post.
10:15
So WordPress has that arrestful
10:17
API built into it since
10:19
I think 2015. And
10:22
we use that when I was working in the newspaper, like
10:24
I said, and we were using that pretty heavily, but we
10:26
ran into a lot of problems trying
10:28
to scale it. That's
10:31
largely because if you think of even just
10:33
like an individual newspaper article,
10:35
right? That's a lot
10:37
of resources to make one article. You have like an
10:40
image, which is a separate resource. You have
10:42
the author who wrote the article, which is
10:44
a separate resource. You have the
10:47
categories and tags that it's categorized in.
10:49
You possibly have image galleries, which are
10:51
another list of resources. You
10:53
have comments maybe on the article, which
10:55
are different resources. So just to publish
10:57
one article page, you're talking like
10:59
lots of resources and hitting an API
11:02
for each of these resources. Typically,
11:05
arrestful APIs will
11:08
give you a full resource and then
11:10
IDs to related resources. And
11:12
so you have to wait for the first
11:14
resource to come back, get the IDs, make
11:16
references back to the other resources, sometimes get
11:18
IDs to other resources. And so you're making
11:20
this like what they
11:23
call, maybe callback hell, right? And
11:26
so we were using arrest
11:28
APIs to do stuff, like I said,
11:30
our native iOS and Android apps, but
11:32
also to like syndicate content to other,
11:34
we had a network of like 50
11:36
something newspapers across the US. And
11:39
so if Denver Post, for example,
11:41
published an article about the
11:43
Broncos winning the Super Bowl or whatever, then maybe
11:46
some other cities wanted
11:49
to subscribe to that news. And so we
11:51
were sending data from one side to another
11:53
or pulling it from one side to another.
11:55
So those systems were
11:58
getting pretty complicated to scale. using
12:00
the resource-based APIs. And
12:02
so around that time GraphQL was open source by Facebook
12:05
when I was working on the newspaper. I was like, oh, this
12:07
looks like it might solve some of our problems. Because
12:11
GraphQL, you
12:13
can build it in a way where you
12:15
can consume multiple resources in one request. And
12:18
I was like, that would solve at
12:20
least some developer problems, right? Like of
12:23
us consuming all these APIs and having to wire
12:25
it together on our end as the consumer. So
12:28
if we could do it on the server and then
12:31
each of our applications could specify what exactly
12:33
they need, our iOS app could ask for
12:35
exactly what it needs in a request where
12:37
it makes sense. So
12:41
I started tinkering with it and proven it
12:43
to some of my colleagues. And then we
12:45
went ahead and production with it not
12:48
too much later in replacing most of our REST
12:51
API usage. So
12:53
that's kind of like the story of it. But yeah,
12:55
so GraphQL differs from REST in that you can, it's
12:58
a type-based system. So
13:00
everything in your application is
13:02
described as a type. So a post,
13:04
for example, in WordPress would be an
13:07
object in GraphQL, an object type.
13:09
And it would have fields like the title
13:12
and the date. And then it can have
13:14
what's called connections to other types in the
13:16
graph, right? So a post
13:18
can have a connection to author and
13:20
images and categories and times. And
13:23
so as the consumer, the person building the
13:25
iOS app, for example, they can write
13:27
a query, a GraphQL query, and
13:30
they specify exactly what fields they want
13:33
to be returned. And so
13:35
the client has full control over what they get,
13:37
and they can do a lot of, you know,
13:39
connected resources in a single request.
13:43
And so from a client perspective,
13:46
like the consumer getting the data, it usually
13:49
is a much more pleasant experience. And when
13:51
things go wrong, which it's software, things will
13:53
go wrong with REST,
13:56
you just know something on that endpoint went
13:58
wrong. And that could
14:00
be a thousand fields on that endpoint. It
14:02
can be a little tricky to debug sometimes.
14:04
With GraphQL, since you specify exactly what fields
14:06
you need, it can be a
14:08
little bit easier to identify when something goes wrong.
14:10
Oh, it's that exact field. And you
14:13
can start doing things like tracking how fast
14:15
each field responds and things like that,
14:17
and start figuring out like the granular
14:19
details of your application. So it solves
14:21
a lot of problems, I think. And yeah,
14:24
hopefully that covers
14:27
it. I like that a lot, actually.
14:29
Good explanation of it. I mean, it makes
14:32
a ton of sense. It's a similar thing
14:34
with anything that we've seen with REST API,
14:36
right? It's not scalable. I mean, it is.
14:38
I shouldn't say it's not scalable, but it's
14:40
like, yeah, GraphQL has just made it so
14:42
much simpler and more scalable and
14:45
more customizable, right? Depending on like that
14:47
iOS client, that Android client versus the
14:50
web, it's like you really get to
14:52
choose, but use that same dataset, which
14:54
is huge. It's funny hearing
14:56
you talk about like, REST even being
14:58
introduced to WordPress. That came, like you
15:01
said, like 2015 or something. I
15:04
was doing something similar at Evernote. The
15:06
task was I was supposed to integrate
15:09
in the Mac client, the iOS and
15:11
Android, and I think the
15:13
web, but they wanted a lot of
15:15
the content. It wasn't like all, obviously
15:17
all of Evernote's content, but some of
15:19
these like notifications and content was coming
15:21
from WordPress. That
15:24
was before REST even existed in WordPress.
15:26
There was a lot of hacking on
15:28
our end to get that to work. Just
15:31
seeing how much it's evolved is amazing. The
15:33
fact is, is like GraphQL didn't exist at
15:35
that time, but if GraphQL had existed, it
15:38
would have made it a lot simpler for
15:40
each of the clients to decide really what
15:42
was the information needed. I
15:44
love your explanation on that. I'll also add,
15:47
I love that we're talking
15:49
about REST versus GraphQL, but in the
15:51
context of WordPress and newspaper
15:54
type websites or other type
15:56
websites like blogs, even
15:58
Evernote and... newspapers are kind of
16:00
similar in the sense that it's a lot of unbounded
16:03
content of different varieties. So you have
16:06
like text, you have images, you have
16:08
media, and this is supposed
16:10
to flow in between the actual website
16:12
itself. And so mixing these different mediums
16:14
is a perfect use case for something
16:17
like GraphQL because different clients can take
16:19
out parts of those mediums that is
16:21
more useful for that client. And
16:23
in the case of like the New
16:25
York Times or some
16:28
other newspaper, when you want
16:30
to make sure that your experience
16:32
is performant, using something like
16:35
WordPress and GraphQL is a great fit
16:37
because it is one
16:39
request resolving many different varieties of
16:41
subjects. And to have
16:44
that be over rest could be, for
16:46
example, 100 different rest calls. And if
16:48
one of those calls fails, the rest
16:50
will just kind of topple over because
16:52
as Jason was saying, you don't have
16:54
those connections anymore to infer on. With
16:57
something like GraphQL, you have less
16:59
of that performance issue where
17:01
you're resolving one big batch
17:03
of requests and you're
17:05
not making multiple round trips between the server
17:07
and the client. So in many ways, it
17:10
makes sense that GraphQL is a great
17:12
fit for this type of user experience
17:14
where it allows you to really
17:17
optimize your performance and tailor each
17:19
client to its needs. I
17:21
will say there are trade-offs, right?
17:24
So rest, when we talk about rest not
17:26
being scalable, quote, unquote, it is obviously, and
17:29
we know it is, but it can be
17:31
frustrating for sure. But what
17:33
one upside rest has is that since
17:35
it is resource-based, it's easier to cache,
17:37
right? So like if you have
17:40
an endpoint for one object, well,
17:42
whenever that object changes, it's easy to
17:45
invalidate that endpoint. So GraphQL
17:47
being an open one endpoint
17:49
to access everything, like
17:53
that's a lot more difficult to cache, right? It's
17:55
like, oh, this is tricky. So
17:57
there are trade-offs to stuff like that. solutions
18:00
though. Like I maintain a plugin
18:02
called WP GraphQL Smart Cache, which you can add
18:04
on to WP GraphQL. And
18:08
then a lot, like my host,
18:10
my employer, WP Engine, we, we
18:13
support like edge caching for
18:15
GraphQL requests. So you can,
18:17
you can query whatever you want, whether
18:19
it's posts or users or taxonomy terms
18:21
or images or whatever you want. And
18:24
Smart Cache plugin, what it does, it tracks
18:26
those IDs and it tag it sends back
18:28
headers in the request. Or sorry, in the
18:30
API response, it sends back headers
18:33
that identify what was asked for in the request
18:35
and what was resolved. And then that can
18:37
be tagged in the cache. And then it
18:39
listens for events in WordPress, like editing
18:41
a post or publishing a new post or deleting
18:43
a post. And then it can
18:45
purge any GraphQL query response from the
18:47
cache if it was impacted by the action.
18:50
So it, it brings back some
18:52
of the benefits of caching a REST API,
18:56
but you get the benefit of the flexibility
18:58
of GraphQL. So it brings back
19:00
some of the stuff that if
19:02
you research like caching GraphQL, you'll read
19:05
a lot of arguments on like, Oh,
19:07
you can't cache it, whatever. It's
19:09
more difficult, but there are solutions and
19:12
we at least have provided some on our side. So,
19:15
yeah. And Jason, my assumption
19:18
there too, the fact that it is
19:20
a plugin is it's probably
19:22
pretty straightforward to integrate into WordPress. Am I
19:25
wrong to say that? Yeah. Yeah.
19:27
So it's a, yeah, it's free on
19:29
the wordpress.org repository. Just search WP GraphQL,
19:31
you can activate it. And then immediately
19:33
what happens when you activate it, you
19:35
get a graphical IDE. If you've ever
19:37
used GraphQL, you probably
19:40
have played with the graphical IDE. So it's just
19:42
an IDE where you put a query on the
19:44
left side and you click the execute button and
19:46
get the response on the right
19:48
side. So you get that in the WordPress admin
19:50
to start playing with. But then
19:52
you just get a GraphQL endpoint and then it's up to
19:54
you to do something with the data, right? Like it, it
19:58
Provides the API for you, but it doesn't. I
20:00
don't do anything with it, credit and let
20:02
you. Do. Something with it sorted. It's really
20:04
a developer two or. More
20:07
than like a lot of wordpress. Planes are like. You.
20:10
Do something you know it's like at it as some
20:12
you why we can drag and drop something or whatever
20:14
written this just as a way for you to access
20:16
data an A in a different way. Of
20:19
are just as A. I love that
20:21
because thinking about my experiences with Wordpress,
20:23
I remember a sewing plugins and it
20:25
was never just like plug and play.
20:28
You install plugin and you spend hours
20:30
tinkering with the settings, making shirt matches
20:32
your environment or third different needs that
20:34
you have by even just reading the
20:37
documentation and hear what you're describing. Jason
20:39
Wp Graft You all is well documented.
20:41
It handles a lot of use cases
20:43
like all the different entity ties that
20:46
you have to select from. I've even
20:48
see. It handles. Authentication.
20:50
And authorization debugging. and six just have
20:53
a solution that you plug and play
20:55
and you can actually get started to
20:57
use it. I think a lot of
20:59
developers listening to this can consider Wordpress
21:02
and Gabi Crap Wp to well as
21:04
something that they can just get started
21:06
with in start building with Vs. Here's
21:08
another plugin Years Yet another solution that
21:11
might even like lock them in. Yeah.
21:14
But. I have one of the one I'm
21:16
most common use cases where haven't like of user
21:18
for announced so I came from unique story like
21:20
in the newspaper were your suitcase data and house
21:22
or to snuff out of the guess like the
21:24
common. Use. Of gruff twelve like.
21:27
I'm. But. The the more common
21:29
like with frameworks like Next becoming you
21:31
know. On the rise the
21:33
it's already popular but it's country ski more
21:36
popular I'm and then you know the of
21:38
your smelled them you know. Knocks.
21:40
With view and all these all these
21:42
frameworks everybody wants to stuff in Javascript
21:45
and components right? Components make sense to
21:47
think a lot of people's brains fly
21:49
in. Ah, and especially if you're
21:51
on big teams working on big projects as
21:53
the site. Having. One
21:56
component that. can do everything
21:58
it needs to do usually stuff would
22:00
include styles, markup, and interactivity
22:02
all in one component. So
22:05
a lot of folks are trying to build component-based websites
22:09
or applications. And so
22:11
GraphQL lends to that very nicely. We
22:15
have a framework, like I mentioned, at WP
22:17
Engine, it's called Faust.js. You go to faustjs.org,
22:19
so that's F-A-U-S-T. But
22:22
it's like what we call a meta-framework
22:24
built on Next. And it
22:27
allows you to build Next sites, and
22:30
it works with WP GraphQL, but it does a
22:32
lot of cool stuff that you lose when you
22:34
go headless with WordPress. So WordPress
22:36
has the template system
22:39
built into it, but it's all PHP-based, right?
22:42
And so for folks that do wanna take advantage of
22:45
component-based architectures, they can
22:47
build their React components, couple
22:49
it with a GraphQL query, or what's
22:51
called a fragment in GraphQL. You can
22:54
specify just the fields that
22:56
this component needs, and
22:59
then you can write your markup and your styles
23:01
or do tailwind classes or whatever you're doing. And
23:06
then you can bring those
23:08
components in with other components, and then GraphQL
23:10
goes and gets the data for all of
23:12
your components at once. So
23:14
it's a pretty cool experience for folks. But
23:16
I think that's the most common use case
23:18
is folks building component-based front ends
23:21
right now, and I think it
23:24
lends very perfectly to that. I'd
23:26
also be curious, like we'd mentioned that, yeah, it's
23:29
a plugin, so that's awesome. It sounds like you
23:31
can integrate fairly easily. Can
23:34
existing blog
23:37
sites or whatever, like someone using WordPress for
23:39
five years and they have a lot of
23:41
data, is it hard to integrate?
23:43
Do they have to do something different or is
23:45
it pretty much like, well, you have all this
23:47
data, now you're just gonna be accessing it a
23:49
little bit differently? Yeah, so I would say it
23:51
would depend, right? If you're a, it
23:54
is a developer tool, right? So
23:57
if you're not comfortable interacting with APIs.
24:00
are making fetch requests to get data from API,
24:03
there's going to be a learning curve, right? A
24:06
lot of folks are coming from the
24:08
JavaScript ecosystem, and previously maybe
24:10
have said no to WordPress-based projects, but now
24:13
they can say, oh, I
24:15
don't have to be a PHP expert, right?
24:18
I can set up a couple plugins, and
24:20
I can get the data out into JavaScript
24:22
component architecture, with probably
24:25
not having to write much or any PHP.
24:28
There's going to be cases, depending on how a customer
24:30
project is, like you're probably
24:32
going to have to extend it, and you might have to know
24:34
some PHP or get somebody who does to help you or whatever.
24:37
But there's a lot of folks that can write
24:39
100% JavaScript and be very
24:41
successful using that now, so you don't have
24:44
to be a PHP or
24:46
WordPress expert in every
24:48
case. But it
24:50
is very much a developer tool. Like the
24:53
small business owner who just wants to click
24:55
and drag and drop stuff is probably not
24:57
for them. Will
24:59
it be maybe someday? Maybe. Maybe under
25:01
the hood it'll be used by tools
25:03
that do that, right? Like page
25:06
builder type of tools that are
25:08
built using components that have GraphQL
25:12
associated with it, but the business owner himself
25:14
probably wouldn't be the one using
25:16
GraphQL unless they're a very tech-savvy person.
25:20
I have a question, Jason. Would you describe
25:22
what we're talking about right now as sort
25:24
of a server-driven UI approach? Yeah,
25:26
I would call GraphQL... You
25:32
have the front end and the back end,
25:34
I would call GraphQL like the middle end,
25:36
right? It's basically what GraphQL does, you have
25:38
a schema and you describe all your types,
25:40
so you say this is all the types
25:42
of data that are possible. But
25:44
I don't describe... Like the GraphQL schema
25:46
doesn't describe how the things should look,
25:49
it just says, here's the data that's
25:51
possible. And so the front end still...
25:54
The front end, whoever's building the components still
25:56
ultimately decides what the UI looks like,
25:59
but they can see what's... possible to populate
26:01
that UI with by using tools
26:03
like Graphical to see what's in the schema. So
26:06
a lot of organizations
26:08
I've seen do what's called schema first development.
26:10
So you'll have your front end developer and
26:12
your back end developer come together or your
26:14
product owner, whoever it is, they'll come together
26:17
and they'll have a rough design and whatever
26:20
Figma or whatever software you're using to design these
26:22
days. And they'll say, this is
26:24
what it should look like. Does API support
26:26
that already or not? If it
26:28
does, cool, they can start building and
26:30
you can start mocking it out, right?
26:32
Like you can just populate your component
26:34
with mock JSON data and then your
26:36
back end developer can go, you
26:38
know, add fields as needed to
26:41
the schema to actually populate it. And
26:43
then all you do is get away the mock data and
26:45
put your Graphical query in and it's working. Right?
26:47
So, so it's like this kind of meat
26:50
in the middle approach where you say like, do
26:52
we already have this data? If not, okay, back end
26:54
developer, you need to go add that support front end
26:56
developer. You just need to make sure this shape of
26:58
data works with your component. Jason,
27:00
that's been huge too, right? Like that's
27:02
something that we've found, like
27:05
being at Netflix, that was something
27:07
we're using a lot of GraphQL.
27:09
And that was something that was really beneficial
27:11
in that, like, let's build those contracts between
27:14
back end and front end and being able
27:16
to, you know, agree upon that
27:18
and understand each other, what you need to do.
27:21
And you can kind of go off and create what you
27:23
need to create. And as long as you've followed
27:25
that, it works really well.
27:27
And so I've seen a lot of benefits to
27:29
like almost, you know, productivity gains where you can
27:31
actually collaborate a lot easier between the back end
27:34
and front end. So I'm glad you called that
27:36
out because I think that is a true benefit.
27:39
Yeah. And what, like what
27:41
I mentioned, we have a lot of JavaScript developers
27:43
that are, you know, attracted to this.
27:46
And you mentioned Kohler earlier, maybe before we
27:48
started recording, but advanced custom fields you used
27:50
in the past. And that's
27:52
a very popular plugin, which My
27:55
employer also owns WP Engine also Advanced. We'll
27:57
go ahead and talk about that. So
28:00
they feel that really complain with
28:02
them. Wordpress where you can. You.
28:04
Can create was com field groups seeking
28:07
the hands of the to have you
28:09
noticed the other email fields or whatever
28:11
passing the fields. your image uploader gallery
28:14
feel like all sorts of different types
28:16
of feals and you can just with
28:18
clicking buttons without having the know Pete
28:21
Pete you can fill the was in
28:23
wordpress for how to manage different types
28:25
content. And. Recently, probably since you've
28:27
used that, they added the ability to
28:29
register post types and taxonomies through a
28:31
desk as. Soon. As.
28:34
Much. As as posting pages out of
28:36
the box right as. But if you
28:39
want other things which most sites need
28:41
other things right light houses or cars
28:43
or you know, products are you know
28:45
whatever shoes or whatever you're managing enough
28:47
ah if ask us feel lousy the
28:50
say like who I want to manage
28:52
cars around a man's houses are only
28:54
use wordpress to manage x, y or
28:56
z other types data. See. Can
28:58
add those types? Just. I couldn't
29:01
a few buttons and now I maintain that we
29:03
pick up to have recess. Now.
29:05
Which which ties the together so you'd have to
29:07
be to tell him. And eight. Figures.
29:09
out what feels you have the advanced feals
29:11
and it brings for to the graft your
29:14
skin as well. And.
29:16
So. Is pretty cool experience eating her
29:18
with graduate Not like these fragments like
29:20
a mention which are like pieces of
29:22
query. Site. If you had
29:25
a little restaurant for example when you needed
29:27
to have list of types of food. You.
29:29
Can. Add support for managing
29:31
food v advanced as some fields and then
29:34
he could add your feals at me like
29:36
a price I'm a picture and. The.
29:38
Calories or whatever it is You know that you
29:40
need a putting all the ingredients. And.
29:43
Then just just by quick and some buttons
29:45
and then you could go see that in
29:47
graphical and you know and consume it with
29:49
draft. Well so javascript developer to do all
29:52
this. Without. Having a new any
29:54
pets V and then they could go build
29:56
their front end with components using craft your
29:58
fragments to say like. Wow. Component
30:00
that shows a list of ingredients. right?
30:03
And has a prominent the most headquarters
30:05
realism ingredients on. A food
30:07
type in the grass and so he also
30:09
you can simply saw this article about. A
30:12
code so. Like Wordpress is getting
30:14
to point. Where. Some low code. Kevlar.
30:17
Cms right? So you as a front end
30:19
developer can. Can. Do you from
30:22
and work he saw me to get be a developer on
30:24
that side of these are now I don't have any. Tools
30:26
at the moment that. Would. Lie to
30:29
be completely. The point and click.
30:31
Here. To. Bowl such but yeah
30:33
I mean supposedly there are tools were
30:36
a I Can Generate Frontier Web Applications
30:38
by I'm I'm still skeptical as us
30:40
and I do love what you're saying
30:42
though in terms of the plug and
30:44
play nature of all these tools. because
30:46
you already have a great platform like
30:48
Wordpress which can do so much and
30:50
a lot of developers were listening to
30:53
this, have used Wordpress and so now
30:55
it's great to know that they can
30:57
just add on these plug and play
30:59
tools like Wp Graft you well, advanced
31:01
custom fields, fast. J as to get
31:03
an even bigger, more richer platform. And
31:05
I love how we're talking about even
31:08
just like scheme of First Development because
31:10
it's Ride with Say at Netflix. That's
31:12
how we've gotten back and engineers and
31:14
print and engineers to speak the same
31:16
language. But as you're describing the ways
31:18
in which is a Pr, it's just
31:20
unblock you. He don't even
31:22
need to be a Phd expert. You can
31:24
work in the language is that you're comfortable
31:27
with and evolved your platforms with these plug
31:29
and play tools to do even so much
31:31
more. And I love that. I think like
31:33
for a lot of people figure out where
31:35
to start, work hard to build that next
31:38
website that even more richer tools like this
31:40
could really help. Yes, I also
31:42
like that you brought up the front and
31:44
aspect of it too because you're not
31:46
necessarily having to learn how to build a
31:49
full back. And for someone like Save Your
31:51
Does building. Like us for a client or
31:53
whatever that may be in and you don't
31:55
have the resources to have a dedicated back
31:58
and engineer some the like Wordpress, Gives
32:00
you so much control and then also on
32:02
the admin side for that. You know client
32:04
that like I need to add you know,
32:07
different shoes to my website or you know
32:09
restaurant needs to add different types of things
32:11
available to the for customer to order and
32:14
it's like they can do that. They have
32:16
that control they don't care. Liked about the
32:18
technology I'd they just want to be able
32:20
to be flexible or not. but then you
32:23
if you're the front an engineer skill yeah
32:25
that's taken care of for me and then
32:27
I can really focus on you know, scaling
32:29
up the front and making it a little
32:32
more custom for that client. I gotta love
32:34
that it's it's really taking the tooling to
32:36
that next level. Unity. I
32:38
mean girls of the similar upsides to
32:41
a commission. For the reason we even
32:43
started it was some frustrations with rest
32:45
and like when when things went wrong
32:47
not known was going wrong. And
32:49
the that's a big part to especially like
32:51
a couple of based development these days when.
32:54
When. Something in your application fails. You
32:56
don't want to know disliked For your
32:58
application this failing, you're like, whoa, What
33:00
part Specifically right? Like that. That
33:03
makes your job easier if you know
33:05
exactly what is failing and so being
33:07
able to like breakdown faced with component
33:10
level or components ask for specific things
33:12
and. And then grabbed your return.
33:14
Exactly what you ask for when something
33:16
does go wrong. In. My opinion, it's
33:18
a lot easier though. troubleshoot and identified
33:21
and six it. So for
33:23
the front end developer who maybe isn't a
33:25
wordpress experts stuff will go wrong like us
33:27
to software that the you know there could
33:29
be a plugin update that breaks and thing
33:31
like it could be.tick off to put him
33:33
up later could be not a plugin updates
33:35
in also like something you can go wrong
33:37
at some point. But. If you're
33:39
if everything's broken down to individual components, it's.
33:42
Often. Is easier in my
33:44
opinion. Thirty. Titan. Fi what
33:46
it is and gets a roulette resolution quicker.
33:48
Also, even just the told practice of the
33:51
said earlier jason is that. Almost.
33:53
half the or let is running on wordpress
33:55
oh yeah something does go wrong chances are
33:57
you're going to be up guys out of
33:59
where it went wrong for some help. I
34:01
think back to my experience with WordPress and
34:03
as soon as you start to become more
34:05
custom back in the day you used
34:08
to run into a wall but with tools
34:10
that you're describing today it sounds like these
34:12
are paved paths that help users almost
34:14
coalesce to each other's use cases but
34:17
I also think about like even the
34:19
maturity of some of this stuff where you
34:22
know I think to the past where I
34:24
was encouraged not to use WordPress because people
34:27
I was working for were afraid that my
34:30
software would look like someone else's software and they'd
34:32
be able to attack my software but
34:34
what you're saying is no it's matured to
34:36
such a point where there's
34:39
clarity there is observability into some
34:41
of these issues and by componentizing
34:44
our software development it
34:46
makes everything reusable it makes things
34:48
more predictable and I love that
34:50
I think that's awesome yeah there's
34:53
a lot of we have I don't know
34:55
if I can share any of their sites
34:57
but there's a customer that uses WP GraphQL
34:59
and they build headless Nux sites which is
35:01
like the Vue version of
35:04
Next.js right and they have
35:06
a bunch of Webby Awards for like
35:08
they're like these super creative like almost
35:11
makes you think of like the flash
35:13
days where everything was animated and stuff's
35:15
moving and you know like you would
35:17
never ever guess that they're WordPress sites you
35:19
know what I mean like they're completely custom but
35:21
all the data is the people
35:23
publishing the content still want to use a CMS
35:25
they're familiar with right they don't want to get
35:28
trained on some new system but the
35:30
front end looks completely different
35:32
than anything you've ever seen you
35:34
know so I
35:37
love that you just called that out Jason
35:39
like it is that too is because so
35:41
many people are using WordPress they may have
35:43
like from the publisher side of things they're
35:45
used to that they're used to that editor
35:47
having to learn a new tool is frustrating
35:50
and also if you want to completely
35:52
overhaul the site and make it more
35:54
interactive or do something that
35:56
doesn't change for the admin side of things that
35:58
doesn't change for them publishing, that's
36:01
just data that continually gets published, but
36:03
you can completely overhaul and change things
36:06
from the developer perspective and what the
36:08
user actually views, but that data doesn't
36:10
change. And I think that is really
36:13
cool to call that out. I think just
36:15
wanted to highlight that. Yeah, speaking
36:18
of that, the concept of having like
36:20
multiple front ends for the same back
36:22
end, like when
36:24
I rebuilt my front end
36:26
for wpgraphical.com, for example, at
36:28
one point I was just on a traditional WordPress site
36:31
because I needed something up fast, right? So I was
36:33
like, I'm an API, but I'm
36:35
just gonna build in a monolithic WordPress. But
36:37
on the side, I started building a
36:39
front end. At the time I was working at Gatsby,
36:43
and so we were building headless front end in
36:45
Gatsby, which pulled in data. So I can
36:47
have my traditional WordPress site rendering on the
36:50
side, I'm building a Gatsby site that's pulling in data
36:52
from my WordPress, and then when I'm ready, I just
36:54
set the DNS, right? Like I can
36:56
have two sites rendering the same data. And
36:59
then when I decided to change from Gatsby to
37:01
Next, same thing, my Gatsby site is still being
37:03
served to users. I start building on
37:05
the side, my next site, right? I'm
37:07
not changing a single thing with how I publish my
37:10
work. You know, so like my WordPress
37:12
CMS is unchanged. Normally, like if you're
37:14
going to do a rebranding for a
37:16
site running on WordPress, it's a chore.
37:18
You've got to like, typically, you migrate
37:20
the whole database somewhere else, you activate
37:22
a new theme, you know, you
37:24
do all this work. And then
37:27
there's some day where you're like, hey, guys, don't
37:29
log in for 12 hours, right? We've got
37:31
to do a content freeze while we switch
37:33
everything over. It's like, you don't have
37:35
to do that anymore. Like, you know, to
37:38
the second you change the DNS, people could
37:40
still be logged in publishing content. And
37:42
your front end developers are just building their
37:44
components over here, and when they're ready, just
37:47
flip it, you know, from pointing the
37:49
front end to WordPress to pointing to a next
37:51
site or a spelt site or whatever
37:53
you're building in. Yeah, I think it also
37:56
makes it a little bit easier for managing
37:58
data across environments to like... If you have
38:00
a local environment, test environment,
38:02
staging, whatever, all the different
38:04
environments, it does make it
38:06
easier. I absolutely remember having
38:08
to change plugins
38:11
or themes or completely overhaul
38:13
a WordPress site and
38:15
you're dealing with people that are still, they're not
38:17
stopping their job, right? You're trying
38:19
to do it behind the scenes and
38:21
you're right. It was not necessarily easy
38:23
to do that. It wasn't the hardest
38:26
thing because there are ways in which
38:28
you can develop a theme and just
38:30
switch the theme. As
38:32
long as everything works, it was pretty seamless, but
38:34
I'm 100% with you is that if you
38:37
can abstract that even more, it makes it
38:39
that much simpler. You
38:42
don't have to have those down times because businesses
38:44
don't want down times. They're like, no, I want
38:46
to keep going. Also, as a developer, you don't
38:48
want to go, oh, well, I could do it
38:51
on the weekend or I can do it late
38:53
at night in the evening because no one's working.
38:55
That sucks too. Both scenarios
38:57
don't work that well. Yeah. Another
38:59
cool thing too that we've been
39:01
seeing in the JavaScript front end
39:04
ecosystem is Vercel,
39:07
for example, if you deploy something to Vercel, it'll
39:09
deploy every time you open a port request your
39:12
code base, right? Then what's cool is you can
39:14
go look at that preview URL. You
39:16
can look at your website at that state. You
39:20
can have two different PRs. One changes your site
39:22
from blue to purple and you can look at
39:24
your blue site and your purple site or whatever.
39:26
Then you can do cool stuff like add comments
39:29
to individual pages and stuff like that. There's
39:32
some really cool stuff that you can do. Normal
39:35
WordPress, you can't look at what your site
39:38
looked like yesterday or the day before. These
39:41
headless run-ins are building static assets of your
39:43
site at a given point in time. It's
39:47
pretty cool. It's like time travel through
39:49
your website development. Yeah, it's
39:52
pretty cool. I hope it
39:54
gets so funny because we're
39:57
basically almost describing the way in which technology
39:59
is... cyclical and I feel like that's a
40:01
theme on this podcast, but in
40:03
this sense, WordPress created a
40:06
development model that these technologies like
40:08
GraphQL came back around and
40:10
made better. And WordPress is
40:12
reaping the benefits of this iteration
40:15
and innovation because now separation of
40:18
concerns is becoming better. And when
40:20
it becomes better, developers no
40:22
longer have to proliferate their changes
40:25
throughout one code base. You
40:27
have your headless CMS over here,
40:30
you have your API over there, and
40:32
that separation of concerns as you're
40:34
describing Jason makes things more reusable.
40:38
And what I love most about this,
40:40
and maybe I'm just kind of getting
40:42
caught up in the moment, but it
40:44
really democratizes development in my opinion. It
40:47
enables developers of all ranges of
40:49
skill to come in and start
40:51
with WordPress, add an API
40:53
with WP GraphQL. And
40:55
then to build their front end in such a way
40:58
that you don't have to be a WordPress expert anymore.
41:00
You can be a front end expert, you can be
41:02
an API expert, or you can be a WordPress expert.
41:06
And I just think it's cool
41:08
to see how technology continues to
41:10
improve on itself. Yeah. And
41:13
like you said, stuff is cyclical too. I
41:15
think like CMS is like web
41:18
used to be fairly static, right? There's like
41:20
HTML pages that you would upload via FTP.
41:22
And like if you want to make a change, you
41:24
got to go like change the HTML and upload a new file. And
41:27
open Dreamweaver. Yeah. And
41:29
so like, like the performance was probably pretty good,
41:31
right? It was like these static files that, you
41:34
know, there wasn't server logic in between is just
41:36
like, here's your file, man. So
41:38
now, but the CMS is like, oh, that's hard.
41:41
Like we need to solve that. But then at
41:43
the cost of okay, now it's dynamic. Now the
41:45
server's taking a hit every time people load your
41:47
page. And then there's like caching that got figured
41:49
out and whatever. But
41:52
now we're back to static. We're like a
41:54
very popular way to build sites with
41:56
Next, for example, is to output static
41:58
files. user hits, they're
42:00
getting a static asset from
42:03
Cloudflare or whatever, and there's
42:05
no server being hit. And
42:07
so, we're back to that point where
42:10
you can use a CMS though, but
42:12
like wp-graphical.com, for example, is
42:14
all static. You're getting 50, 60
42:18
millisecond responses or whatever. It's not hitting
42:20
a WordPress server. All my data or
42:22
a chunk of my data is in WordPress. I
42:24
have multiple data pool. Some of my
42:27
docs are marked down files in GitHub, but
42:29
then my marketing pages and blog posts are
42:31
in WordPress. So, it's like multiple data sources
42:33
come together and make one unified front end.
42:35
That's another cool part
42:38
about APIs and components
42:40
and stuff. So, we're back to that
42:42
point in web development where it's
42:44
a static file that the user is getting served 20
42:46
years ago, but
42:49
there's the dynamic nature. I can go hit
42:51
publish in WordPress. It invalidates next
42:54
cache, next rebuilds the page on
42:56
demand and creates a
42:58
new static file. So, my users are
43:00
always getting that static response,
43:03
50 millisecond responses,
43:07
but they're seeing up-to-date data. So, I
43:09
could go publish a new post and you'd be
43:11
able to see it within a couple seconds, but
43:14
the file is static. So, it's
43:17
a really cool step of
43:19
cyclical, but we're coming up with new solutions to
43:22
get to the same end result that we used to have. I
43:26
love it. Yeah, it's so
43:28
great. I mean, I love going down this
43:30
journey and just learning the updates on WordPress
43:32
because it has changed significantly and quite frankly,
43:34
made it a lot better for developers and
43:37
end users. I'm
43:39
curious, before we dive into our
43:41
picks, I'm curious to know, what
43:44
are some advice that you would
43:46
give someone wanting to leverage WPGraphQL?
43:50
How would they get started? What
43:52
are things that they can maybe avoid making
43:54
mistakes with? Yeah,
43:57
sure. So, yeah, like anything,
43:59
there's... There's trade-offs with
44:01
any technology, right? So like we mentioned,
44:03
one of the benefits of GraphQL is
44:05
being able to fetch multiple
44:07
resources in one request, right? But
44:10
there's a cost to that too, right? It's
44:12
not magic, right? The server still
44:14
has to get these resources and put it. So
44:17
there is a tipping point, and it's not
44:19
the same for everybody. It depends on your
44:21
other plugins you have and what type of
44:23
data you're asking for. But there is a
44:25
tipping point when asking for too much data
44:27
is too much data, right? So
44:31
be cautious, just because you can doesn't
44:33
mean you should, right? So like at
44:35
some point, you probably still should break
44:37
up your GraphQL requests into multiple requests.
44:41
Not always, it doesn't mean like every time
44:44
you fetch two resources should be two queries.
44:46
Like that's not the case, but you
44:48
shouldn't be creating for like 500,000 posts with
44:51
their authors and their terms and their comments like
44:53
all in one payload. That doesn't make any sense,
44:55
right? So use your brain a little bit too
44:59
and just be like, when I do this
45:01
outside GraphQL, would this make sense outside GraphQL,
45:04
right? And if not, then it might not make sense
45:06
in GraphQL too. It might be easier to do, but
45:09
you maybe shouldn't do it too. So
45:11
there's things like that to consider. Also with
45:14
like caching validation, like we have solutions
45:16
for caching validation, but the more
45:18
data that you query, the
45:20
more actions will be tied in validating that
45:22
data too. So like having a balance of
45:24
like getting the data that
45:27
you need, but also what does the user need,
45:29
right? Does the user actually need a thousand posts on
45:31
the blog? Probably not, like
45:34
maybe 20. And then when they scroll, maybe
45:36
a load more button or infinite
45:38
scroll or something, you know? So just be
45:40
smart, like just because you can't
45:42
do it doesn't mean you should. So those are some
45:45
things you should think about. There are plugins
45:47
for, like I said, like there's caching
45:49
plugin, there's the GraphQL plugin for
45:51
ACF, there's all sorts of different
45:53
stuff, but WordPress is
45:55
massive. There's thousands of WordPress
45:57
plugins that do lots of unique things in WordPress.
46:00
And so there's definitely not coverage for everything
46:02
out there. So if you
46:04
need X, Y, or Z
46:06
functionality, the counterpart in
46:08
GraphQL might not exist yet. So you
46:10
might have to roll up your sleeves and
46:14
make a WordPress plugin work with the
46:16
GraphQL API. So that's
46:18
true with even with like the REST API too
46:20
or anything else. You
46:23
might have to do some custom work or find someone who can
46:25
help you do it. But
46:28
so there's things like that. You do
46:30
lose some things, like I mentioned, like WordPress
46:32
does have the whole template layer to it.
46:34
If you're building sites in traditional WordPress,
46:37
if you go with React or some other technology,
46:40
you have to do a lot of that yourself, right? Like,
46:43
so fast we try and help with that. I would encourage
46:45
you to check it out if you are building stuff in
46:47
Next. Like we do things like, at the
46:51
center of WordPress, whenever you visit a URL,
46:54
WordPress knows how to translate that URL to
46:56
figure out what type of thing it is
46:58
and return a template that matches that thing,
47:01
right? Like if you visit a user profile, like
47:03
on a newspaper, you see a list
47:05
of posts written by that user. So WordPress
47:08
knows that that URL represents a user
47:10
and should load a template of users
47:12
posts, right? Or if you visit the
47:14
homepage, it knows to load the homepage template. So
47:17
fast, like we have a we have a templating
47:19
system that works very similar to
47:22
WordPress so you can build
47:24
templates based on the URL that you visit.
47:26
Fast knows how to talk to GraphQL to figure
47:29
out what data it is and
47:31
then what templates should match. And then so
47:33
you can just in Next provide templates that
47:35
match and whichever one matches first so it
47:37
will load very similar to WordPress.
47:39
So a lot of stuff like that, headless
47:41
developers are trying to figure out on their
47:43
own. And we're trying to centralize
47:46
some of that. Like the stuff that
47:48
you lose by decoupling WordPress, we're
47:50
giving it back to you. But allowing
47:52
you to take advantage of cool stuff
47:54
like components that you can't do in
47:56
the traditional WordPress. So I
47:58
love that. Yeah,
48:01
I think also one thing I would add to
48:03
maybe not so much for WP GraphQL
48:05
as a best advice, but you
48:08
mentioned plugins. We've actually mentioned it quite a
48:10
few times in this episode is
48:12
one thing I've learned over the years
48:14
is use them sparingly. Like there is
48:17
so many plugins out there and you
48:19
can go and add way too many
48:21
plugins. I've had clients that want everything
48:23
and everything that can be customizable and
48:25
it just adds more complexity that
48:27
you may not need. So that's just one piece
48:29
of advice I would share. I would just
48:32
say after listening to this episode, if you're
48:34
not sure where to start, check out the documentation because
48:36
I was looking at, I've used WordPress
48:38
before, but I was looking at the documentation
48:41
for WP GraphQL and it
48:43
is comprehensive and it's presented in a
48:45
way that I think any developer can
48:47
pick up. And so I always recommend
48:50
starting off with documentation or examples and
48:52
there are plenty. We
48:54
just launched a new site last
48:56
week for the ACF extension too.
48:59
So acf.wpgraphql.com, still some stuff
49:01
in progress in there, but for
49:03
that particular extension, it's even more comprehensive
49:06
for just that one plugin. All
49:08
right. Well, that's a good time for us to jump
49:10
into picks. In each episode of the Front End Happy
49:12
Hour podcast, we like to share picks of things that
49:15
we found interesting, want to share with all of you.
49:17
Cole, you want to start us off? Sure.
49:20
Today I have two picks.
49:22
My first pick is Costco's
49:24
Kirkland peanut butter pretzels, which
49:26
are ironically in
49:28
my background right now.
49:31
And they're very good for when you need
49:33
a snack and I just, you'll see this
49:35
kind of disappear over the day. My
49:38
second pick is I recently moved
49:40
and my house doesn't have any
49:42
forced air at the moment. And
49:44
so I've picked up one of
49:46
these CO2 sensors from Aeronet. And
49:48
as you can see right now,
49:50
even just in this episode, I'm
49:52
in the yellow territory. This is where you start
49:55
to get a little bit like lightheaded, a little
49:58
bit like you've just exercised. And
50:00
so this is a great sensor for reminding me
50:02
when I need to open a window or go
50:04
on a walk after All
50:07
day sitting in virtual meetings right
50:10
on Jason. What do you have for us? Oh Man,
50:13
I don't think I can't prepare for this.
50:15
I'll go I'll say a stream deck. So I've got
50:17
a stream deck. I have This
50:19
little tool so I could do it's got buttons, you
50:22
know that I can press I can do things like
50:24
control my lights or whatever, you know
50:26
straight from here So I can
50:29
configure shortcuts and stuff to do things like that
50:31
I can even turn on lights
50:33
in other rooms and stuff like that
50:35
just from here or like control zoom
50:37
settings or whatever We'll go
50:39
with that Yeah, that's a
50:41
good one I definitely leverage that one
50:43
especially in meetings and things like that to
50:46
you can have like raising hand or mute
50:48
Unmute like there's is a really
50:50
customizable for what you want to do with it
50:52
Which is pretty cool and actually having physical buttons
50:54
is great. So that's a good one I just
50:56
have one pick for this episode. I Obviously
50:59
been doing a lot of photography for years
51:01
on my own I love seeing my kids
51:03
get into it. And so I purchased
51:06
two cameras for one for each of
51:08
my kids It's just like a small
51:10
point-and-shoot camera It's not an expensive one
51:13
at all, but it's been
51:15
really cool to see them just like using
51:17
them. They're shooting video They're taking photos and
51:19
you know, it's just it's been a really
51:21
cool thing So if people have kids want
51:24
a cheap point-and-shoot that works well I
51:26
will link that in the show notes, but it's it's been
51:29
a cool one to try out Jason Thanks
51:31
so much for joining us. This is amazing
51:33
I love taking a thank you for taking
51:35
us down the journey of WordPress and WP
51:37
GraphQL It's been great to learn a lot
51:40
on that. Where can people get in touch
51:42
with you? Yeah, so WP GraphQL calm, of
51:44
course like Cole mentioned that's where
51:46
the docs and everything are I'm on Twitter
51:49
at WP GraphQL or at Jason ball. J
51:51
s 1 b a h l So
51:54
you find me on or X calm? I guess
51:56
I still call Twitter. What's the agreement? Do we
51:58
call it Twitter? So I still call We
52:00
call it Twitter. Yes, definitely. No one knows what
52:03
X is. I call it Twitter until
52:05
I'm not calling it at all anymore. That's
52:07
fair. Yeah, exactly.
52:10
And then on the
52:12
WPGraphQL website, if you scroll all the way to the
52:14
bottom, we have a link to Slack community. So you
52:16
can join that from that link. We
52:18
have, I don't know, 3,000 or something people
52:20
in there helping each other out,
52:23
you know, building stuff with
52:25
WPGraphQL. So I'm pretty active in there.
52:27
Awesome. I love when there's a community
52:29
around like any certain technology because you
52:31
learn a lot from one another and
52:33
can get that help, which is great.
52:36
You can find Front End Happy Hour
52:38
at frontendhappyhour.com. We are now on YouTube.
52:40
We are recording these videos, which is
52:42
great for our episodes. So you can
52:45
find us on YouTube at Front End
52:47
HH, on Twitter. Yes, Twitter at Front
52:49
End HH. Any last words?
52:51
I'm on YouTube too. I forgot that. All
52:54
right. So just search WPGraphQL on there
52:56
too. Why are we not on TikTok? TikTok
53:01
might need to be the next thing, Cole. That is
53:03
like probably the next thing that we need to be
53:05
doing. I feel like TikTok
53:07
is the new Twitter. At least I'm
53:09
seeing a lot of tech start to proliferate
53:12
there.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More