[00:00:00] Nathan Wrigley: Hello there and welcome once again to the WP Builds podcast, you've reached episode number 348, entitled how the Gato GraphQL plugin can accelerate your WordPress development. It was published on Thursday, the 2nd of November, 2023.
Before we get to the main content, a few bits of housekeeping. Black Friday is just around the corner, but don't worry if you're into WordPress, we have got your WordPress black Friday needs completely covered. Head to WP Builds.com forward slash black. Once more WP Builds.com forward slash black. And over there, you will see a growing list of plugins themes, blocks, all sorts, hosting anything in the WordPress space. It's there. It's searchable and filterable. Completely free to use, go and check it out. We've got things like the date that it expires, a short description and it's really easy to find exactly what you need in the run-up to black Friday.
If you want to submit your deal. If you're a product owner, then go there. There's an add a deal button. And if you fancy becoming a sponsor and helping that page to flourish, you can also go there, and there's a section of black boxes at the top for the sponsored areas. And you can click one of the yellow buttons to get you started on that process. We would really appreciate that.
The other thing to mention is that I'm doing a couple of webinars series at the moment. The first one is a brand new series with Sabrina Zeidan, who's a speed expert in the WordPress space. It's called speed it up. And we're doing that every Thursday. The idea is that we go on the screen and she demonstrates how to speed up one aspect of a WordPress website. That could be literally anything. And we're looking for people to supply us with pages where they think there might be some kind of bottleneck or just a general improvement to be made.
If you want to submit your site, then go to this easy to remember URL as well. WP Builds.com forward slash speed. Fill out that form and hopefully we will get your website freely audited on the webinar series.
The other thing to mention is that Leonardo Losoviz who I'm chatting to today, we've started a webinar series with him about the plugin, which is the whole point of the podcast today, it's called the Gato GraphQL plugin. And because it's quite in depth, Leo and I, after recording this podcast episode, decided to do a five-part webinar series. The links to that are in the show notes. But basically if you go to WP Builds.com forward slash demos. There's a link in the main menu. You'll be able to see them all, they're bundled in with all the webinars that we've done before. But it really is a great way of getting you up to speed. So if today's episode piques your interest, you can go to that and you'll be able to see five hour long ish episodes where Leo on the screen with video enables you to see exactly what is going on with the plugin.
The WP Builds podcast is brought to you today by GoDaddy Pro. GoDaddy Pro the home of managed WordPress hosting that includes free domain, SSL and 24 7 support. Bundle that with The Hub by GoDaddy Pro to unlock more free benefits to manage multiple sites in one place, invoice clients, and get 30% off new purchases. You can find out more by heading to go.me forward slash WP Builds. Once more, go.me forward slash WP Builds. And sincere thanks to GoDaddy Pro for that ongoing support of the WP Builds podcast.
Okay. As I said at the top of the show today, we're interviewing Leonardo Losoviz all about the Gato GraphQL plugin. What it can do. It's built on top of a Facebook project called GraphQL. And enables you to do truly astonishing things in a UI of his creation,. You can do almost anything, wrangle any data with the plugin, do incredibly complicated things. I'm not gonna be able to do it justice in this short introduction. So let's get on with the podcast and that Leo introduce it, and all that it can do. And don't forget, we've got that webinar series if you're left, wanting more. I hope that you enjoy the podcast.
I am joined on the podcast today by Leonardo Losoviz. How are you doing, Leonardo?
[00:04:43] Leonardo Losoviz: I'm doing very good. Thanks for inviting me, Nathan.
[00:04:47] Nathan Wrigley: Oh, you are so welcome. This is going to be one of those episodes where I feel possibly a little bit out of my depth. Leonardo is going to talk to us about a project that he's been working on for I think a number of years now and the technical details of this are probably going to be a little bit above my head, but hopefully.
With Leo's help, I'm going to be able to tread water a little bit and hopefully get to some sort of understanding of what his plugin can do. Before we do that, Leo, just to paint some context about you, would you mind just telling us a little bit about who you are, where you are, what you do for a living, how long you've been using WordPress, any of that kind of biographical stuff?
[00:05:29] Leonardo Losoviz: Yeah, sure. So I started using WordPress around 10 years ago, a friend of mine, he asked me to help him with his website. And I started checking WordPress. I didn't know about it and I installed it and I had a website running. I was like, Whoa, this is so cool. And in that moment, I knew that I wanted to keep working with this.
But not sure how, because I'm not a designer. I'm a developer, but. I didn't have clients or anything, but I started making my own website, playing with it a bit. And then I continued doing another website, always for myself. And I've been on this journey of not knowing really what I'm actually doing, but exploring and seeing where this is leading to.
So I don't have clients. You were asking me how I make money. And the truth is, I don't know how I make money.
[00:06:27] Nathan Wrigley: Good answer.
[00:06:28] Leonardo Losoviz: Yeah. So I'm going to show you this plugin now. I've been working on displaying for what, five years. And it's amazing. If you have, if you had asked me five, five years ago, what I was going to be doing for the next five years, I would have never thought that I will be building a plugin for five years, but basically I have been working on this plugin.
It was like an, it grew naturally out of my website. I saw that there was something very cool that I was working with and I was like, okay let's extract this and make it general for other people to use. And yeah, it took me five years. And in the meantime, I have been working a bit of being consulting work, and then I was writing articles.
I've been writing for Smashing Magazine and CSS Tricks here and there, no, nothing permanent, nothing stable. So I've been, yeah, just. Going by for the last five years, let's say, and now that I have my plugin, I hope that this is the time for me to say, okay, now, hopefully you have a stable income.
You have a product that you can start selling and looking for your own clients. So basically, hopefully from now on the next five years, I know what I will be doing.
[00:07:45] Nathan Wrigley: Nice. So the plugin that we're going to be talking about today, you will be able to find it at gatographql. com. I'm going to spell that out just so that it's really obvious. So it's g a t o g r a p h q l. com. Of course, it goes without saying. The link will be embedded in the show note for this episode, but it may be that you wanna pause this podcast, go to that website, have a good poke around, and then come back and listen because that may give you a little bit more context.
However, if you are listening to this in the car or something like that and are unable to, hopefully we'll do a good job of explaining what it is. But maybe, first of all Leo, it would be a good idea for you to explain. What is GraphQL? How does it work with WordPress? Why is it useful? Essentially, what does it do?
What is GraphQL
[00:08:38] Leonardo Losoviz: What is GraphQL? So GraphQL is a technology for retrieving data from your server. So we have in WordPress, the WP Rest A P I, which allows us already to fetch data from the WordPress site, indeed, Gutenberg, or the Block. The block editor is currently using the W P R S A P I to fetch data. from the server and then to use this data to render the HTML in the client, in the editor.
And that's how Gutenberg is so interactive that you are inputting content and then the blog renders itself on the spot. It doesn't need to load the whole page. Again, they don't need to refresh the page. So GraphQL is an alternative to REST. It's not better, it's not worse, it's different. So I'm not here to tell people to use GraphQL over rest because that's not the point, but GraphQL does have certain characteristics that make it very powerful.
Now one thing that I say that is. Useful to fetch data, but it can do much more than that. It can also mutate data. And the idea is that you can update your blog post. For instance, you could normally do it from the client and you might actually think, Oh, but I will not have such a need. I don't have a website that I need to update my blog posts.
That doesn't seem to be a very common scenario that we will be doing or using all the time. But we do update our blog posts. From the admin or do other things from the admin that we might benefit from using GraphQL instead of using the the default way to do it. So one simple example, if you want to duplicate the blog post, there is a plugin, there's a free plugin that you can download that one from Yost, the applicator, right? You download this plugin, you select the blog post and you duplicate it. But what happens if in the process? You also want to change some aspect of the post. For instance, you want to duplicate the title, appending, copy. Or, if you speak Spanish, you want to say copia. You want to have more control on these things.
Of course, you can duplicate the blog post and then you go and you edit it. And you change, you do the change, perfect. But what happens if you want to duplicate 20 blog posts? Do you want to have to edit one by one after? For instance, this is an example of something that you can do with GraphQL, which is, you select the 20 blog posts, You duplicate them, but in the process of duplicating, you say the title, instead of duplicating the title, you can also append copia.
And so when it is stored in the database, it's already including the modifications. I have been thinking a lot about these things. That GraphQL is good to, the use case that everyone knows, is to build headless sites or decoupled applications that you fetch data from the WordPress site. But also when you're inside of WordPress, to interact with your data, to create a blog post or modify blog posts, to send emails, to send personalized emails, you can call a GraphQL query.
We can call it like a script, basically, that it iterates all of the users. And selects properties from them. For instance, you could have metadata indicating if they have remaining credits. Maybe your users have a user account, and when they buy credits, you store that piece of information as metadata. You can, for instance, iterate all of the users, retrieve this information, and then compose an email personalized for them, saying Hi, you have no more credits.
Would you like to buy more? And you submit, you send the email to your users. So now this is a different plugin. You have plugins for sending emails to your users. You can compose a template, but you need to, you, you need to have the plugin give you the chance to select that specific piece of information from the database.
Like the meta value with the remaining credits that the user has. If the plugin allows you to do that, you're good to go. If you don't, then you have to find some solution, maybe you have to call some PHP. With GraphQL, you code the GraphQL query, you can query all the users, and then for each user, you say, give me this meta value, and then you compose the email, and then you have a mutation, which is send email, and then it sends the email to the user.
Now we have two different use cases. One was to duplicate a blog post that you might have the duplicator plugin. On the other side, you want to send emails that you have another plugin, but at the end, there are two different. There are two different ways to interact with data. One is to update the post, the other one is to send an email to a user.
But you're, at the end, interacting with data. GraphQL is basically a tool that allows you to create a query, to do something with your data, you fetch data, you modify the data, and you store it again on the server. And anything that you might actually need to do, it.
[00:14:21] Nathan Wrigley: with GraphQL? Obviously you've described it as being incredibly powerful. I'm just wondering, is that in fact the case? Are there any limited, like glaring limitations for things that you could imagine you would like to achieve that GraphQL. Couldn't do, or is it really the case that if you want to interact with the database, if you want to suck out data and as you described it, mutate it in some way, GraphQL can achieve.
Anything that you could imagine, obviously given the fact that you would need to learn how to do that with GraphQL, but can it literally do almost anything your heart would desire?
[00:14:58] Leonardo Losoviz: I think it will do most of the things that my heart will desire. That sounds a bit dangerous though.
[00:15:10] Nathan Wrigley: But
[00:15:10] Leonardo Losoviz: but
[00:15:11] Nathan Wrigley: speaking, it can, within the limitations of what's likely it can do almost anything you would like.
[00:15:18] Leonardo Losoviz: in theory, yes. So let's be practical. You download the plugin and you want to create, you want to duplicate an WooCommerce product. And hey, you cannot, because the way that GraphQL works is. There's something called a resolver that it's on the server, which is basically the one that executes the operation that you want to do.
So for instance, when I was mentioning that you can send an email, there is a resolver that basically sends the email, that it gets the inputs that you provide, the... And then it calls the wpMail function to send the email. So what happens if you want to do something for which nobody has yet coded the resolver?
Then you cannot do it. So in theory, once FieldResolver is provided... You can do it, but until then you cannot do it. So the question is, how much can you do given what we have? So in the plugin right now, you have all the resolvers to interact with WordPress core, so you can fetch all the posts, you can fetch all the users, all the comments the taxonomies, categories, settings, all the things that you do on WordPress, but extensions.
other plugins. Right now I don't have any. So for instance, everyone uses ACF advanced custom fields, and I'm the first one to admit that a plugin that doesn't have an integration with ACF is a bit useless because everyone kind of needs to fetch data from advanced custom fields. So right now that is not done.
But once it is done, then you can just Do it. You can use it from the client, from the WP admin. So basically what I want to say is deep builds over time on day one there's so much that you can do on day 50, there's much more on, on day 2000, there will be a lot that we can do. So hopefully if we speak maybe in two years from now and you ask me this question, I will be saying.
Oh, yes. Now you have this, and that you can actually do. And the number of things that you cannot do gets smaller and smaller. So that's the thing from interacting with the data. But your question also concerns user interaction. And in that sense, GraphQL is code. It's a GraphQL query.
It's not unfriendly. It's actually easy once you know how to do it. You like learning another another language. But maybe you want to use a drag and drop tool. Your, I was mentioning how you could replace this plugin or that plugin, but maybe those plugins, they have the user interface that you can drag and drop.
And it does whatever that you want to do for you. GraphQL doesn't have that. It doesn't have a user interface that you can drag and drop elements. What it has is a client where you input the GraphQL query that you can code in the moment, and you run the GraphQL query. So you're operating with code.
Now, it is very powerful. And actually one thing that you can do with this plugin, for instance, is an automator. You have automator plugins that you can compose a pipeline of actions. When this happens, do this, and then do that, and then do that, right? With GraphQL, you can do the same. It's just that instead of being a graphical interface where the user has drag and drop for elements, you have First query, and then you have a second query that you can run conditionally based on the results of the first query, and then you have a third query that is stacked after the second query, and so on.
So if you think about it, it's a bit like GitHub actions that you have a pipeline of elements and if something happens on the first element, then it runs the second one or you can skip it. You can do the same with with GraphQL. So basically you can recreate. All of these interactions that you need with GraphQL queries, basically.
[00:19:34] Nathan Wrigley: So GraphQL, the plugin that you've created Gato GraphQL, we should probably have pointed out right at the start that this is an, it's recently released. And so you mentioned that it would be nice if in the future it had connections or pathways for using, let's say ACF or any other plugin that you may have commonly come across in the WordPress space.
But the reason that hasn't been built is simply a function of time. This is. This is brand new. I know that it's been, it's not brand new to you. You've spent five years of your life pouring your blood, sweat and tears into all of this, but to the WordPress community, it's brand new.
So we'll bear that in mind, but you're describing an interface where you have to interact with code. And I've actually was lucky enough to receive a. A copy of the plugin from Leo to have a little bit of a play with. And I think we should get into that because you have to understand some aspect of the syntax of GraphQL.
You can't come to this cold. It's not a case of, okay, I've got the duplicate plugin. I install that, activate it. And now I get menu items in the, I don't know, in the posts UI so that I can clone things and what have you, you are interacting with code, but the code. You go out of your way to provide an easy interface for creating some of that.
You've got all of the different things that you can use in that code in the Explorer, as you call it on the left hand side. Do you just want to explain that interface and the steps that you go to help users create their own queries?
You have for PHP, of course, you have for ASP, you have for C you have for many all of them use the same graphical interface. It's open source is well maintained by the community. The way that it works is you have a query on the left side. And you can run the query and then you have the results on the right side.
Then there are a couple of widgets that get attached to this graphical interface. One is called the Explorer. And it lists down all of the fields that you have on your schema. So what is the schema? The schema is all of the entities that you have on the database, all of your types. So in the schema it will say that you have The user type, the post type, the comment type.
Category type, the tag type, and so on. And then each of these types, it has its own fields, which is data that you can query. So for instance, the post has the title, the URL, the content, the excerpt, and many more. The user will have the name, the URL, email. the display name and so on. So all of these are the fields that you can fetch from your server from the WordPress site.
So on this widget called the Explorer, you can just click on all of the different fields, and they will automatically be added to the query in the body. Of the client, then you don't actually need to know how to how to call. You don't have to know between quotes, right? You still need to know, but it makes it much easier.
You can see, you can visualize all the data that you have and you click, and everything becomes part of the query. And then you can run the query. So it's very intuitive. And this is the great advantage that GraphQL has over REST. Because REST, it's not interactive. You have the the endpoint that it already gets all of the data that you need.
And you have to call all of the, these fields. Using a controller on PHP code. But in this case with GraphQL, there is no need to go to your plugin code and deploy new code. What you do is you go to the client, and you compose the query on the spot in the wp admin. What happens if you want to persist this query?
Maybe it is a query that You use time and again, the example that I gave to duplicate the blog post, maybe you want to do it all the time. So you don't want to have to call this query all the time. So there is another section which is called persistent queries, which is exactly that. It's actually, it's a custom post type. And when you edit the custom post type using the standard WordPress editor, you have the same graphical client. That you can call the GraphQL query and then you save it, you store it on the database and then you can run it as many times as you want. Moreover, it's an endpoint all by itself. So all you have to do is to grab the permalink of this custom post type and paste it on your browser.
And it will get all the data that you have that you're retrieving. Or if you want to execute the mutation, the blog post, you can invoke it by copy pasting the URL into the browser and then it will execute it. So it's no different than REST in the sense that you can publish an endpoint. But instead of going to the PHP source code, you come to the WP admin, you open a new graphical client you compose a query, you publish it, and it will be there on your WordPress database for from then on.
[00:25:29] Nathan Wrigley: So I'm going to go to a little bit of pains to explain how this works. So essentially I'm in the Gato GraphQL plug in and, as you'd imagine, there's a top level menu item for that. But underneath that top level menu item is a, an item called GraphQL. I can't remember how you pronounced it.
Graphical. Of course. Yeah, that makes nice sense. And it loads and what you've got is a sidebar on the left. More or less everything that you can do. So as an example, I've clicked on probably a typical use case, I've clicked on the word post that then opens up a bunch of options, which are related to WordPress posts.
So for example, I might want to fetch the, I don't know the display name of a particular. Author so I can then just simply drill down and tick the box next to display name. I might like to, oh, I don't know, pick out a meta value of something with a certain key. I might like to pick out a username or a u r l path.
Basically, if you can imagine it in WordPress, Leo's built it in and as I start to click things the query updates in real time in front of me. So if I tick something and then I tick it, I get away again. It. And in this way, you can drill down into any part of, in this case, a post, or a page, or a category, or anything else that you want.
Comments, just featured images, the whole lot. Then you can run that query just by clicking this handy little play button, and right in front of your eyes, That query appears and obviously everything that you requested on the left is now featured on the right. There's also a section which enables you to search for documentation.
So it's almost like a fourth little sidebar there. So in this way, it's. It's a really nice interface because you can click things. You don't really have to have the knowledge. You'd have to worry about typos and getting a bracket missing here and a bracket missing there, or whatever it may be, because this handles all that for you.
It spits out the code, the query that you want, and then you can, if you wish to run it, you can run that, and if you wish to save it, you can save it in the persisted query section, and in this way, you can then run this. Whenever you like, and it's trivially easy to do. It's absolutely magical.
[00:27:56] Leonardo Losoviz: Thank you.
[00:27:57] Nathan Wrigley: Yeah, no, you're fine. It's really straightforward. It's very difficult for us to explain what's going on. And I'm just going to drop this in here now. Leo and I have decided that we're going to run a four part webinar series. Because the technicalities of explaining this in audio is...
It's fairly tricky. What we've decided to do is run a four part webinar series in which Leo can actually show you how this works. So I'm just going to say, put this first date in your diary. We're going to do the first one on the 11th of October. So that'll be a Wednesday, 11th of October, 2023. It's going to go out live 3pm UK time.
It doesn't matter whether you see it live or not, cause we're going to record it and put it on the WordPress website, wpbuilds. com, but we're going to cover four. Topics. The first is an introduction to the plugin, Gato GraphQL, how to run queries in the admin, creating endpoints, access control, and so on.
And then as the weeks go on, we'll try to do one each week. Same time, same day. Then in the second episode Leo's going to show us how to integrate with Gutenberg, customizing content for users and duplicating posts, as he's just described. Third episode, updating content in bulk, automating tasks. And then the fourth episode will be translating, wow.
Translating content, interacting with external services. Importing and distributing content. So anyway, pause the podcast. Now go to your calendar app, Wednesday, the 11th of October at 3 PM, put that in there and you'll be able to see the first one, as I said, if you miss it, it doesn't really matter because they're going to be recorded, but yeah, you'll get a better idea of how all this works.
How difficult was this to build, Leo?
[00:29:44] Leonardo Losoviz: What can I say? You should look at the iBox that I have. It's, they're getting darker and, I'm so relieved. I'm so relieved that it's finally. Coming out seeing the light of the day. I must say I'm very bad at management at planning because I always thought that I was like three months away from finishing and it was like that for at least two years.
It's been at least two years of being three months away from finishing. It's been so much work and it was unexpected. To be honest, I didn't know how much work it was going to be. I think that is very difficult to do things properly when you want to be completely sure that nothing will break. I'm a developer myself and I respect developers.
I wouldn't want to give them a product that. It's not reliable, and it's quite a lot of effort, all the tests that you have to code. You're basically creating interactions with all of your WordPress database, and you need to test everything. There are so many use cases, and one simple missing use case that you don't have.
Then maybe it will not be useful to a big chunk of users. I was explaining that I don't have advanced custom fields yet. That one will be my priority. Looking forward, but everything that we have so far in the plugin, for instance, integration with Gutenberg, like all of them is it's a world by itself, you start like with one tiny thing, you can take maybe one week, then one month, then three months.
And you just finish one, one, one, one section. Yeah, I must say it has been so much.
[00:31:34] Nathan Wrigley: It does look like a highly polished product. That is to say that it's feature complete in, I know you said that ACF and what have you isn't there, but it really does look as if it's really good to go. So if you are. Of a mind that you would like a way to take your let's say that you're not familiar with the rest API and you want to be able to do complicated more complicated things with your data on your website.
Perhaps you just want to stretch what it is that you're displaying. Perhaps you're working as a freelancer and some of this stuff is a little bit beyond your reach. This is. Certainly worth a look. It hopefully will make the process of creating complicated interactions with the database and spitting it out in whatever format and connecting to external services a lot easier.
So yeah, go and check out gartographql. com. But I just wanted to ask if you. If it's been released at the moment and it's brand new, do you have a way that you are going to be interacting with your first, let's say six months of users, are you going to be listening carefully to what it is they want, or do you already have a fairly strong roadmap that you think people are going to use, have you been.
Taking feedback from the WordPress community. Have you let many people look at this? What I'm trying to do is pose the question. If people look at your plugin, are you open to improving it in the way that people would like you to do?
[00:33:07] Leonardo Losoviz: Yes, that's actually my absolute number one priority, which is to see how people want to use it. They need to use it and to try to satisfy their needs. So right now it is pretty feature complete, as you mentioned, in the sense that it has. The basic tools to start building possibly everything that you need.
But of course, you need to provide integration with other plugins, like advanced custom fields, Yoast and many other popular plugins. So on day one, when I start like coding. Like looking towards the future, I will start working on these very popular plugins. Advanced custom fields, I think my priority number one.
And the other thing that I need to call immediately is I want to provide a starter project for anyone to create their own extensions. So as I was mentioning, you need to have a resolver to resolve your functionality. I am not the only one who is going to be doing this. If you have your own custom data in WordPress, you as a developer will need possibly to create your own fields.
So right now it is doable, but you need to know how. You need to navigate the code like an expert. And my goal is to make it easy. I want to create a starter project that you can download and it will guide you towards creating the resolver in just a few steps and you can publish and then you can have your own custom code.
Going on very quickly. So that, that, that's my priority. And then looking towards a bit longer in the future in the plugin, there's a section called extensions with all the different extensions that I have already provided. And at the very bottom, there is one item that is. Saying, are you missing one extension?
Do you need some integration that is not available? And it's a link where it goes to a GitHub repo that I created just to collect feedback. And the way that I look at it is I would just ask people, what integration do you need? And whenever I finish coding an integration, I will start with the next one.
And whichever has the most upvotes is basically the next one in my list. Now, all of this is all of these extensions are commercial they're commercial and many people they're like, Oh but don't you have some open source stuff? So I invite everyone to also code open source extensions, independently of me working on building commercial extensions that will, from which I will make a livelihood.
So I don't want to be working I don't want to tell people to not. create extensions if they need them. So the other thing that I will do is to try to support them to say, okay, you want to code an extension. Which one is it? You want to code the integration with Yoast? If you do it, I'm going to help you.
So the idea is to create open source projects that then everyone can help, they can benefit, and you publish it on the, maybe on the Gato GraphQL repo. Or not, it doesn't matter. I don't need to have ownership of them, but basically to try to steer the community into creating extensions by themselves and I will help them or voting, telling me which ones they need, and then possibly I will code it and quite likely will be part of the of the shop.
And it will be a commercial extension. So
[00:36:39] Nathan Wrigley: So tell us about the pricing and the sort of structure of the plugin. Obviously, you've just mentioned that in the extension section, oh, I'm just going to scroll through, I would imagine there's probably about 30 or 40 there at the moment. So there's one, for example, called application glue and automator bundle, all extensions, bundle, public API, bundle, cache control, conditional field manipulation, events, manager, email sender.
I could go on, but you can look. Look for yourself. But there's absolutely loads of them. So is that the way that you're going to monetize this? And will the base of the plugin, the sort of the foundational plugin, if you like, will that via be available in the WordPress repo or is this only a paid for enterprise?
[00:37:27] Leonardo Losoviz: the plugin is free. Gato, GraphQL, you can download it from the WP the WordPress plugin directory, not. Right now, as we are speaking, I don't know when this podcast is going to go live, but I submitted it around one month ago, and there is a backlog the plugin review team said when I submitted it, it gave me an expected time of two months.
So maybe in
[00:37:54] Nathan Wrigley: Eight weeks. Yeah.
[00:37:55] Leonardo Losoviz: yeah, hopefully in one month from now, but maybe it will take a bit longer, maybe 45 days, it will be available on the plugin directory. So the. The plugin is free, you can download it, and you have there all of the interactions with WordPress Core. You can interact with posts, users, comments, taxonomies, also Gutenberg.
If you want to interact with Gutenberg, all of that is already coded in what is WordPress Core. Then the extensions are. Add ons that you install on top of the plugin, you can currently I have 26 extensions and because many of them make sense in working in tandem with other ones, I created four bundles.
And one of the bundles is called content translation. With that, you can translate your website using the Google Translate API. And as I was mentioning, there's an integration with Gutenberg. So you can translate all the properties inside of the blocks in, in, in your post. So instead of translating the whole HTML code, you translate property by property by property, which is amazing because that guarantees that the block, the HTML markup will not get broken. So it goes to the Google translate API, translates all of the properties, and then you store the post again, and you can do this in bulk also. So you can say, okay, translate these 10 posts from English to French or whatever it is. Also, there is another extension called the the automated app, app glue and automator.
That one of the thing that he has is to. Connect to web servers other than your it has an HTTP client so you can interact with different services you can call Slack, you can call Twitter, you can call GitHub, you can call MailChimp, you can retrieve your list of users from MailChimp from your newsletter and combine that information with the users that you have in your WordPress site And then merge the data and do something with it.
You can send an email based on this information and so on and so forth. So basically you can collect data from external APIs and process this information in your site. So then as you can see, you can also have possibilities of interacting in many different ways, right? That you can translate an email with the Google Translate API and then call an external service to send the email.
Or you can do a webhook. Of sorts that when some other service has an event for you, you can process it in your WordPress site. You can send an email, you can translate it, you can ping someone, you can add a comment, you can create a new post, you can add some metadata, so you can react to this event, you can react to that event and all of those things.
And then there's the one extension that is called the all extension, sorry, there's the one bundle that is called the all extensions bundle, which basically has everything, right now there are 26 extensions. There's access control that you can you can grant access to users to your endpoints to access data so you can create an endpoint just for your clients and you can validate.
Even by IP, you can say this endpoint will make this data available. That is the data for this one client only, and only people coming from this IP can access it. So that one in that extension is called access control. Another one is called cache control. That you can use HTTP caching to cache the response and all of these ones you can combine.
So all of them, the 26 of them are available in the one called the all extensions bundle. And I hope that people will get the all extensions bundle because. To be honest I'm a developer myself and many of the things that I have coded, they came from my natural need to try to do this and to try to do that.
And it was a never ending trip that I always wanted to have one more and one
[00:42:12] Nathan Wrigley: Yeah.
[00:42:12] Leonardo Losoviz: more. That's also why it took five years. I need to be honest with myself. I could have launched it sometime ago, but I, it's like you always want to have the next one. And before you, you finish that, you're like, no, this is not ready.
This is not ready.
[00:42:27] Nathan Wrigley: Yeah.
[00:42:28] Leonardo Losoviz: But all 26 have something that for one reason or another, I needed, and I know that when you start playing with it, you will understand the possibilities that, that open up just now you, you mentioned about rest that people can use now GraphQL instead of rest, but I look at it in a different manner, which is, you don't know yet what you can do with this.
Because I think it's a different tool. I don't think that this is a comparison to anything that we have yet in the sense that it's a generic tool that you can. used to interact with data. So now you're like, Oh, I can interact with data. What does that mean? And these things that I was saying, you can translate your content, you can send an email, you can admit the data, you can create the post.
We all have different use cases, right? And I'm so excited to see how people can think of ways to interact with data that I haven't even thought about. And this gives us the chance. Basically, it's a it opens up a new way to think about how to solve your problems that you didn't have in the past.
[00:43:34] Nathan Wrigley: With the interface, the graphical interface, as we described earlier, do you offer kind of recipes and I know that you can point and click and build up your query and I know that you've got extensions, which obviously do a lot of the heavy lifting 26 and counting. But I was wondering if there are recipes available, or maybe it's more that I'm asking, is there support available?
Do you have videos that you've created to enable people to understand what's going on? Because although it is straightforward, given how complex it is, what you're trying to achieve, I guess for somebody who's never really. Played with wrangling data and all of those kinds of things.
There's going to be a bit of a learning curve here because it is not point and click. It's not drag and drop. It is interacting with actual queries. And so you've got to understand what's going on there. So do you have recipes to get people started and do you have documentation, including videos and explainers, all of that kind of thing?
[00:44:35] Leonardo Losoviz: Yes. So we have a there's a section called recipes. It is both inside of the plug in and also on the website on that graph ql dot com slash recipes. And as of today, there is a list of 30 if I'm not wrong recipes of things that you can do. And the idea is graph ql is not difficult. Once you know the language, but you still have to code the query to do the operation, right?
So it makes no sense to how to the query from scratch each single time. So basically what I have done is I have create, I have compiled a list of 30 use cases that we might have. That we use often, and I just created a query and some of them are actually pretty long. The one for translation that it explains how to translate the post it does that block by block by block.
And you need to you need to indicate which are the attributes from each block that you need to translate, right? So in the case of the paragraph, it is The text property, the text attribute, I don't remember in the case of the video is the caption in the case of the image is also the caption in the case of the pull quote is verse or is something else.
I don't remember, but all of these different attributes. I have already coded them. So now if you want to translate your post, you just go to the recipe section and you scroll down to the item called translation. And you have the GraphQL query. You copy the query and you paste it in the graphical client and you can run it.
And the idea also is I once again, I want to be honest. GraphQL is Not difficult, but it does take a learning curve. So on the recipes, I also took it as a way to tell people how it works. There's a way to think about it that on day one, you might find a bit challenging. So when I was creating these queries, I was also explaining how they work.
You can actually read my. Thought process. This is what I want to achieve. How do I do that in GraphQL? So all along, it gives you tips. And if you read from the very first recipe until the 30th, you will understand everything that you can do with the plugin, because I literally went over all of the different features.
I challenged some of the things that it can do, like the one of the translation one, I think is. It's particularly impressive what it can do. And then the other thing that you can do is you can distribute content across WordPress sites. So if you have a WordPress site where you have all of your content and you want to distribute your content to other WordPress sites like regional, you have regional newspapers or a car dealership, you can do that.
And you can. For instance, distribute content that has been translated or that has been tagged or that it has a different category and so on and so forth. From the first recipe until the very last one, the complexity grows. And in the process, you can see how it works. There are tips indicating, oh, so there's this field, you can use it this way, you can use it that way.
There's this directive, you can use it this way, you can use it that way. The idea is... On day one, you will be intimidated. You'll feel intimidated and I don't expect otherwise. I'm not asking people to use my plugin and think that it's going to be easy peasy because it will not.
On day one, it will not. But I want to say on day 10, it will be easy. Now, check the recipes. You can find out how it works, and slowly but surely you will see how you can do this yourself and how much power you have at your hands.
[00:48:28] Nathan Wrigley: it's a neat way of laying it out, isn't it? So recipes is one of the menu, main menu items under the plugin menu section. And each of those, as Leo says, gets more and more complicated. So it starts off with a fairly simple one of there's an introduction basically, and then it starts with searching WordPress data.
Fairly straightforward. There's a few queries there, but there's some tips at the top and then we get into querying dynamic. Data and as you go, it, a little bit of complexity is added and a little bit more detail is added and tips are added. And in some cases like the one for translation, which is really extremely long indeed.
There's even a little video added in there by Leo to give you some sort of pointers as to how to do it. But, some use cases might be search, replace and store again. That's one of them feeding data to blocks in the editor. Exposing public and private endpoints. And then it gets more complicated.
Retrieving data. This could be interesting for people. Retrieving data from an external API. You can imagine all sorts of scenarios where that would be useful. Updating large sets of data. There's all sorts in there. And so this, acts as a sort of knowledge base. But do you offer if, I'm guessing you're going to offer some level of support, but do you, how do you work?
Do you work on have you got a ticketing system? Do you work on email? How does that all go?
[00:49:46] Leonardo Losoviz: On the plugin, there's a, on the, at the very bottom, it is about CatoGraphQL and there is a tag, a tab, sorry, that is support. And when you have one of the extensions, it has a form. So basically you can add your request. And I have a ticketing system. And yes, I will reply to to, to the request.
At the same time, I have the open source repo. So basically, I want to think about this as two different entities. On one side, I have the commercial extensions that will help you to solve your problem. If you have any problem, if you don't know how to integrate it. Or if you need some specific, you need to create some custom code, I will certainly try to do my best to help you at the same time that the open source project for the free plugin.
And there is a project by the community. So I hope that if anyone has a question, they can add a discussion. And maybe I will reply to it or maybe somebody else will reply to it. Yeah,
[00:50:46] Nathan Wrigley: If you, if you're working with somebody, let's say for example, somebody comes with you with a really interesting use case and you work with them to create something akin to one of your extensions, what would the intention then be to potentially add that into the extensions suite that you've got, you said there's 26 at the moment, the idea is to grow that over time and obviously if community members Yeah.
If you assist community members, I guess you'll maybe reserve the right to put them into your extensions library as well.
[00:51:18] Leonardo Losoviz: I haven't, I cannot tell you yet because everything is so new, but I need to see how things develop. Maybe I will have 20, 000 clients. Maybe I'll have just two clients. I really have no clue how successful this will be, but my idea is to keep it open. So if you want to create an extension. And actually, you as a developer want to make money out of it, we can partner with it.
I have, I don't, I'm not going to say yes, I'm not going to say no in advance. I have no clue how it's going to develop. But yeah, absolutely. Actually, if that happens, that would be lovely. I would love to have a marketplace. The plugin is itself a marketplace because there is this section called extensions, which is listing all of the extensions.
And of course I could say, okay, look. You create an extension, you want to do an integration with WooCommerce. I would love for anyone to come and tell me, I will code the integration for WooCommerce. And then I'll be like, sure, why don't we become partners? And I publish the extension, I promote the extension inside the plugin, by you maintain the plugin.
So things like that, yes, I think that I see a potential. Let's see how it goes, but yeah, that, that'll be lovely.
[00:52:31] Nathan Wrigley: Yeah. That's a really interesting idea, isn't it? A marketplace within a plugin, obviously given that it's a very specific set of requirements. If you come to Leo and you work together, maybe you can add that in there, but the open source nature of it obviously speaks massively to, to the whole WordPress ecosystem.
Okay. So we've, I think we've probably used up the time that we've got available once more. First thing to mention is the URL. So if you want to go to the website, you're going to go to Gato GraphQL g a t o g r a p h q l. com. Hopefully that site will be up and running at that point. But also again, a quick reminder of the calendar.
If you've been intrigued by what Leo and I have talked about, but you want more. Meet on the bones for want of a better word. And you want to see this in action because seeing is believing in this case. Wednesday, the 3rd of October is our first date, 3pm UK time. That'll be on wpbuilds. com forward slash live.
So you can come and join us there. Alternatively, once we've recorded it, we'll make sure it's available on the website and Leo will be getting hold of that video as well. And he can do what he wishes to do with that. Maybe put it on his own website. For now, Leo. Just before we end, is there anywhere, if people have listened to this and have been interested and want to talk to you and get some more, make basically bridge the gap, make contact with you and start to talk to you about this.
Where's the best way to find you?
[00:54:00] Leonardo Losoviz: GatoGraphQL. com, there is a contact us link at the very bottom. If you click there, there is a form, you can just send me yeah, an email that way.
[00:54:13] Nathan Wrigley: Thank you very much. Obviously it goes without saying, best of luck. I hope that it becomes a roaring success. I realize that you put an awful lot of work into this. So let's hope that it is successful for you. Really appreciate you, Leo, being on the podcast with me today. Thanks so much.
[00:54:27] Leonardo Losoviz: Thanks to you. Thanks so much, Nathan.
[00:54:29] Nathan Wrigley: Well, I hope that you enjoyed that. An absolute pleasure chatting to Leo all about his Gato GraphQL plugin. You probably had an intuition listening to that, that it was really quite complicated to describe in audio form. And that is why we started our five-part webinar series. You can find out more about that and see the plugin on the screen, which obviously makes things a lot more easy. We've got five episodes and we've recorded three of them so far and published them.
You can get those at wpbuilds.com. Go to the archives menu and then scroll down to the demos archive and you will see them there. But yeah, Leo is going through the plugin in increasingly more complicated steps, making it easy for you to understand just what the plugin can do. And it truly is remarkable. So hopefully some of you who've listened to this have gained something from that. That would be my wish. The WP Builds podcast is brought to you today by GoDaddy Pro. GoDaddy Pro the home of managed WordPress hosting that includes free domain, SSL and 24 7 support. Bundle that with The Hub, by GoDaddy Pro to unlock more free benefits to manage multiple sites in one place, invoice clients and get 30% off new purchases. You can find out more by heading to go.me forward slash WP Builds. And we do thank GoDaddy Pro for there ongoing support of the WP Builds podcast.
Okay. Hopefully you'll be able to join us this week at some point, either for the, this weekend word pressure on Monday, or for the Leo webinars series that's on Wednesday or for the Sabrina Zeridan, speed it up show. That's going to be on Thursday. They can all be found wpbuilds.com forward slash live. And there are some calendar links on the homepage of WP Builds.
We will be back next week. Hopefully we'll see you. Then it'll be an episode with David Waumsley and I, so looking forward to that. But hopefully you will stay safe and have a nice week. I have got some really horribly cheesy AI music coming in. It's got the slightly pretentious title of promises, and I'm really sure if you listen carefully, you'll be able to hear the joins in the music, as the AI does a really dreadful job of making this piece of music. Have a good week, stay safe. Bye-bye for now.