 It is week three of Form of Awesome and this time we're going to be looking at doing advanced stuff with plugins and gravity forms amongst other things. Tom Woodford, welcome to week three. Hey, thank you, Jim. It's good to be here. Tom has a sign for me. He's going to let me know when he hears and he does. Is that right now? You hear it? Yeah. Okay, good. I might have some microphone problems. I do. That's the sign that I need to be quiet. But welcome, everybody, and we're going to jump in what we've been doing or we started last week and we're going to continue with it this week is we're going to be doing a little Q&A. So if you're out there and you're in gravity forms, I mean, you're in, you're in discord and in gravity forms, just let us know if you have anything to share for the work that you've been doing from week two to week three. So I have been doing some stuff. I have some questions to get us started and then we can take it from there. If you do want to join us, I'm going to leave the invite link in discord and you could just jump in at any point and that if you hear the sound on the stream would love to know this kind of weird buzzing that might be happening, I will try and fix that. But anyway, let's not worry too much about who killed who, right? Let's not worry about who killed who. All right, so I'm going to go and I'm going to go to my screen and I'm going to show you something, Tom. Let me, I got to actually, ready, hold on, you know, you know the drill by now. God, it's so smooth. It's so smooth. Okay. So what I'm going to do if I can figure it out and I don't know if I can is I'm going to put this both on the side and actually I just want to put my screen up and Tom, you might not be able to see, we may not be able to see you, but you can see us, which is how we like it. So I'm going to bring up, I feel good about that. Good. So here's the small little project I've been working on. It's basically a library for media and one of the things I ran into this week is I have a very simple form and I'm going to show it because I'm kind of proud of it. It's a form where I'm able to catalog various media types, books, magazines, movies, these are things I've been collecting. And so I'll put in the title and year, et cetera. And one of the things I came into or I came up against is I was using a tag in Wordpress through Gravity Forms for a director. So a director of a movie, like for example, The Shining Stanley Kubrick or The Crazies, George Romero was not actually resolving properly. And I'll give you an example of that here to show you what I mean because I've been using the advanced post creation tool, all of the things that we kind of covered in the last week or so. And so I have a couple of examples of posts here. I'm going to show you the exact problem I have because anyone else ran into it. There's a draft post of a VHS entry for The Crazies and then the actual post that worked. But the draft post, and let's preview it, shows the actual, and I did do some CSS background. I hope you all love this as much as I do. So that's the title of it. And then here is the title of the director, which is a tag. And I'm using a, let me see if I got this right, a simple text field in the form, which in advanced post creation is being effectively translated for that post into a tag. And so what I wanted to do is have that tag linkable so that anytime George Romero shows up in the library, which will be several times, you could link on that and see all media that is associated with George Romero as a director. And so that was the idea. And what happened though is when I did do it, you can't see it too well here because it's a little small. I think it's right down. And I can't put it to it because of my screen screen. But there's a George space Romero. There's no hyphen. And I was trying to wrap my head around like, what's going on? Like, I think I did everything right. And that's when I reached out for help in Discord. And Tom, thankfully, you did jump in and show me an approach. But I think this might be useful for folks to think about is that, like, a lot of times you'll run up against an issue like this. And there's always a way around it, but it's where you start getting deeper into the possibilities of gravity form, but also the complexities. Does that make sense, Tom? I don't want to go on describing my problem at Nozium without a solution. No, I think it's absolutely correct. This is about, I don't know, sometimes creative problem solving as much as anything else. Because you ran into a problem that I haven't had before, in part because, well, one, I don't tend to use tags for this. Or if I do, the theme itself is the thing that's linking to them. Like even on that one, I think if you scroll down at the bottom of that post. Yes. Yeah, it's here. It's ugly. Let me disappear myself. It's ugly, but it's here. You can't see it, thanks to my beautiful theme. But if I click on this, you will. And those are functional tags down there. And so you could do the, like, modify the post template so that it's a little bit different. That's an option. You know, there's a couple of different ways we could approach it, but perhaps explaining like why it's that way is good, too. Because if you don't mind flipping to your advanced post creation view. I don't mind. Let me do that right now. I'm going to go into forms and there's my catalog. And then here in settings is post creation. Right. So if you think about what's happening here, when you look at this, we're using the merge field. So if Jim scrolls down a little bit, all right, when it comes in here in the body under director, it's coming in as a text field, right? And so it just is the words in a text field. Whereas if you scroll on down to where we then map it to a category or to tags, what it's doing there is the conversion. So it's taking whatever is in that, whatever is in that value and making it into a tag. So that's where the translation is occurring. So it's two different things based on the same data. Does that maybe help explain why it's happening? You know, it does because one of the things I run into when I'm when I'm doing this is it was hard. It's hard. It's hard for me to understand. I create the form and then the middle piece, almost like the translation piece, the middle where is that advanced post creation that takes everything I put in the form and says, now I'm going to write it into a and like Taylor said, when we were talking about it this week, it's like nail merge for a WordPress post. And it's interesting to think about that because now that makes sense and I understand it. Okay. How do I do certain things that may not be built into gravity forms with this mail merge feature? One of them being tags, like how do you get tags to be linkable? So if it's had two words like Stanley Kubrick or George Romero, it includes that hyphen. So that was one thing I ran up against. Another question I have for you as I was playing with this is, so what if I you said you don't use tags often? So what if I want to use categories for like format or categories? So format of media is my beta max VHS laser disk. And I had several categories. How do I then start linking them as I did in line in a way that is not just like, oh, here's the category that I'm building. What link would I use? Would it be the same merge mail field basically like, you know, format, colon, a number and that number is usually the category number of something? Right. What you have the option for built in with categories that you don't for tags is the ability to return a different value on a merge tag. So let me let me share this because I think this is really worth understanding. So I'll throw this. These are called merge tag modifiers. So what you can do here is different types of fields have different modifiers. So what happens when you normally use kind of the whizzy wig thing is it'll be whatever you wrote your question to be, it'll be colon, whatever the field ID is that happens automatically. So when you know you click on the little Lego head looking thing and you choose your piece and that gets kind of shot in there. But there's a manual edition that you can do on certain things with an extra colon. That's a modifier. And they have the examples of the modifiers down here and you can do stuff like the label, which would be the field label. You can do some other things. Remember when we set manual values for stuff, like if I said pick your favorite pet and I had cat or dog and fish. I could set the value to be, for instance, say an image embed URL. And so you would just see cat, dog, fish. You'd click on it, but I'd be able to add this as an appended piece and return just a chunk of HTML or something like that. Or whatever I want really that I set as the value. So that's an interesting option. But notice this one applies only to the field types category. You could return the ID. So you'd have to mess with the URL parameters that WordPress uses. But the ID is not going to have any spaces. So you just reference, you do the question mark cat ID equals and then this value. And that was the problem with the tags piece of that. They don't have the ability to basically query and filter by ID, is that right? Correct. It doesn't have it as a built in modifier. Now the interesting thing is I'd never written a merge modifier before. But today I did because you brought it up. And it's, I know not everyone's going to get into writing these things. But I just want to show it real quick, just to show you how little it is because it's not big. It's literally just this piece right here. We're just adding a particular filter and it looks scary. But what I did is I found in the documentation something that was pretty close to it, which is this, which was just doing URL encoding. And I was like, Oh, all I want to do is find and replace any spaces and then replace them with a dash. And so you can see all I all I changed was this part string replace and I changed my name to URL maker. So that's the modifier. So when you'd write it, it'd be whatever your question is, whatever your ID is and URL maker and that thing for any of your any of your fields would remove the space and add a dash. So, you know, it's a little piece of something and there's like 30. Well, no, I think I'm over exaggerating now. But there are like six or seven different ways we could solve this, including, you know, JavaScript. This way we could have used an external plugin where instead of doing any mail merge at all, we just did like there's short codes that will like display the tag that's associated with the post. You know, you just find the plugin that does that and then you just throw the short code in there. You know what I mean? So there's lots of different ways you can solve these problems as long as you kind of keep your head open and don't get mad about it, really, including asking people. I mean, that's the other nice thing is it's active community here. And brought more broadly where you can kind of find answers, talk to people, think through different ways. And I can show you that in practice because if I go full screen here and I do this and I hide myself, I can actually show like, so here's the preview tag I was talking about the one that didn't have it. And this is the one I was running the problems because when I clicked on it, I would get the 404. So I tried it with that very process you talked about. And if I go back to the forums, this was useful for me to kind of go. I go into my catalog, I go to post creation. This is the mail merge for WordPress posts, right? That's the metaphor that's going to get me through. And then this is where I kind of changed that and had the URL based on the text you shared in your blog post that allowed me to actually create that URL maker that converted this director colon 27, which was the original mail merge for gravity forms. Using this, it added the hyphen. So now when I go to my second post of that and I love this and I go to the crazies, all of this is for this to get here and to say, here's the director. Here's George Romero. If I'm going to have creep show, if I'm going to have Night of the Living Dad or Dawn of the Dead, I'm going to need to see all of that by Romero. And so I click here and now that tag works and I now have directors being used as tags. And I mean, it's a simple, stupid thing. Maybe even we spent more time on it than we need to. But it's interesting because it led me down the kind of rabbit hole of understanding a little bit more of ways to do things. If you have, no one's jumping in just yet. So I have another question for you. So here I have, this is a 1970s VHS. So it didn't come out in 73, but like 79 or 80. And there's no subtitles on it and no extras, right? So I basically said subtitles, no. And I added subtitled language, there's none, extras, there's none. It's just a straight up VHS, but these fields still show, right? And so I guess how would one doing a forum like this be able to say in advanced post-creation, I want to hide anything that is empty or no, right? And this is where, yeah, yeah, absolutely. This is where you get into the conditional short codes. So I talked about this maybe a little bit early in the game, but I threw the link in Discord. And these things are, you're just wrapping the whole thing in whatever you want to show or hide based on whatever conditions you want to set. And again, some of it depends on what the field is. Like if you look at the examples, the action is conditional. You're doing the same sort of thing and referencing your merge tags. And then you're setting a condition, like contains or is not. Like this is the one I use most frequently. It's like show it if it's not empty, which is kind of the opposite of how you think about it maybe. But to me, it was like the easiest way to do it. I was like, all right, if I've got transcripts, then they should be shown. And if not, don't show any of this. And in this case, we just put both of the things inside our short codes in the advanced post-creation view. And then if there's nothing in it, then it's not going to show up. Alternately, you could say, all right, if the thing is empty, then show a particular thing, like not applicable. So that way you don't have to write it each time. Or but you'd have the consistency of the template. So you have lots of different choices like this. Now, I always have to look these up. So don't feel like you can or should memorize short codes. Short codes kind of suck, admittedly. But they will let you do some neat things. And they'll let you deal with all of this stuff, which was something that always frustrated me in the old days before they existed. Because when you're missing that piece of data, then it just looks like something's messed up. Or you make like a link and you don't have a URL submit it. And then it's a broken link or whatever. But this gets you around all of those problems. And again, you can be as sophisticated as you want. If the value of something is 10, do something. What that is is up to you. This could be a chunk of HTML. It could be a really cool GIF. Super cool GIF of the number 10. I don't know why that sounded so dumb, but it did. But you know what I mean? You have a lot of flexibility here to just kind of build stuff based on things. So it's like a mail merge with another set of conditional logic within it, above and beyond what was available to you at the form. And so you would just really wrap that, say for a mind the title and whatever would go within that title in a short code. You just wrap it. That's not bad. No, it's not. How long, if you do, so let's just theoretically how long would that advanced post creation get if you're doing a library catalog? I'm starting to think, this is just VHS, I'm feeling like. I'm going to have a ton of other media and conditions. And I'm wondering, I guess I'm going to have to, once I decide which format it will branching logic and take me to only things. But the actual post, the advanced post creation form, is going to have a ton of stuff in it, arguably. Yeah, it can get a little intense, you know, depending on what level of data and stuff you're putting into it. And I think too, that's where you get into like, all right, there's data that I'm storing in the body of the post, and then there's taxonomic data. And to me, I kind of treat and think about those things slightly differently, you know, for a couple of different reasons. Because anything in the body of the post, if I want to change it at some point, I got to think as like a find and replace type of search, like I'd have to go to the database and do something funky probably, or do a weird filter over all the content, like something awkward. But anything I put in taxonomic structures, be they regular or custom, I can change centrally, and they're going to change, like say I misspelled Stanley Kubrick, which could very well happen with me. You know, if I needed to change that, I can change it someplace centrally, it changes everywhere, you know, I'm good to go that way. So that's one thing to think through about where you put stuff and why. Yeah, and that's kind of been part of this process that I've really enjoyed is, you know, I'm still only on one format of a particular media type. And again, this is just an example. But like thinking through, like what are the things I want to collect, and what's best as a category, what's best as a tag, why, which has always been a kind of arbitrary decision in some ways in WordPress. There are arguments for either. And then I don't want to go too far down that rabbit hole until I thought through, like would I want to link format, or is it enough to just filter by a format based on certain things like how deep do I want to go with all of these being taxonomies and meta data versus not. So I know this is again, but that's I think anyone who's doing a form that's somewhat complex when it comes to collecting data is going to have to meet that challenge and make some decisions. Yeah, absolutely. And I mean, it's what we came up with on the field botany page was like, you know, this is the super old one. But I mean, some of what led us to these decisions was like, how do we want to be able to see stuff? So it's always about practical, it's always that balance between what do you want to enter, the practicality of entering it, and what do you want to be able to find stuff by. So you're constantly walking those lines and like, how much time do I want to spend building this? You know, am I ever going to search through a combination of director and transcripts, you know, but not published after 1974? You know, like there's a lot of stuff you may be writing down that you don't really care about. So I mean, thinking that through is a bit useful. And this is, you know, something that's come up a number of times, which is the idea of faceted searches based on a number of different components. Like I said, this thing is probably, I don't know, six or eight years old now. So it's ancient and creaky and ugly. But at the time, this was pushing my development skills and ability to do some stuff pretty hard. And again, like this is then I couldn't make custom themes. I couldn't do lots of different things. This is facet WP, but it's all fed by gravity forms and give some structure and, you know, let you find it. Let me see pony pasture vines. You know, that's the kind of stuff that's likely to happen. And was the stuff they wanted. Yeah, but I could see one to see all VHS that came out in 1973, what we have, right? Or every, every potential, it seems to me, every potential bit of metadata should be filterable and linkable in some way, right? It's almost like the way of thinking about the web. And like Taylor's saying in Discord, sure, it's a time complexity thing. And I don't even know if I'll build this library out in total, but I'm trying to, I'm trying to do it right. If I do with just spending time on thinking about it and then backfilling. Because then once you enter them, again, I have kids who can do that. Well, and the, and the nice thing is, is, you know, just keep in mind, like WordPress has so many, you know, essentially most URLs are really query strings. So anytime you're using the taxonomic structures, you can make URLs that do what I just did with facet WP may look slightly different. But WordPress has like, you can search by single categories or categories plus tags. And you don't have to build anything extra. It's all kind of in the guts of WordPress. You can do multiple categories minus a certain tag. Like all of that stuff lives in the URL parameter stuff. Just no one, no one remembers it or really uses it anymore. But it's there. The guts are there. Alan always did a good job of like URL stuff in WordPress, I feel like. Well, I appreciated you in the kind of write up for getting ready for this week and you linking out to some of that stuff Alan did. And also for me, I know this is, I go on about this, but it's also a long narrative arc of a lot of this work that's been happening for a long time. And kind of it's getting to a point like you said, where you had to really root Goldberg it to get some of this stuff working 10 years ago. And where we come to this point, whether it's full site editing or with whatever, like a lot of this stuff could be drag and drop, right? Like you could really just run with it, you know, with a few, like a mail merge. It's, it is impressive how far it's going. Yeah. I mean, the stuff gets more and more powerful. I think once, once both Gutenberg, and it's been around for a while, but Gutenberg and full site editing, full site editing is super new. Like it's, it's got, it's got a ways to go before a lot of the major tools are going to integrate with it fully. But I think at some point they will. It's just not right now. So, you know, walking that line while you figure out what you want to do with what. It's only going to get easier to do stuff like this. It's certainly gotten easier in most cases to do it on the, on the user end. Now on the development end, I think it's getting maybe more complex. But that's, that's maybe the way it works. Oh, I can't hear you. That's maybe the way what happens when you try and be a square space or wicks or you go into that realm, it does change the dynamics of it. I mean, I remember the first time I was an Elementor like what? It's my wizzy wig. So, but you know, there we go. Well, I mean, I feel like for, I don't know, like we still haven't reached on the wizzy wig side, like what Dreamweaver was in the, you know, mid to late 90s. And so like, I don't know. Wizzy wig stuff will always be kind of funny online for the moment until they cross some sort of barrier and then it'll be magical. But like right now I still struggle with it. Yeah. No, it's true. All right. Well, I don't think anyone's going to jump in here and I've taken up enough time with my concerns around a media library that will serve an army of one. So what do you have for us in store this week, Tom? Well, I did want to jump back because if you'll recall last time we were here together, had a little bit of problem with featured images and I was puzzled. And let me tell you why. Because at least at one point, and I'll swear this is true, you could kind of mix and match the two things here, the post fields here, which is what I was trying to do at that point. I was using post image from this and expecting it to work and it no longer does because the advanced post process just goes a totally different route. So what I have to do when I want featured images is I put a regular file thing and you'll notice I've restricted this in terms of type. And so you can do that manually there if you want, but it helps people put the right thing. And then once you've got a file piece here under settings and post creation, you'll have the ability to associate it with the featured image. So mine was excitingly titled file, which isn't a greatest name. Maybe I should go with featured image or something like that. But now when I submit things, it does work because all of my stuff needs to be here. I can't mix and match. So that's something I learned. And I learned it the hard way of like staring at it for a long time and then eventually googling and then reading the actual documentation that told me don't mix them. So you know, live and learn. I have tweaked this a bit, so I don't know if it'll be helpful to see it. I added a little bit of CS, a little bit of HTML, but maybe we can take a look at what one of these looks like and talk about kind of how I'm playing with it at the moment. So we've got our featured image. We've logged this superhero villain, Cheetah. That is awesome. I'm sold. Right. It turns out most of these things don't have aliases, so I'm just making stuff up. And then I have our evil level, her weaknesses, her rivals, and an origin story. So let's take a look at how these pieces work and kind of how they get together. So again here, we just have some chunks of stuff. And once again, you can write this in a regular classic editor. You might be able to do it in different aspects of the Gutenberg piece and then paste it in here and then just replace, like that idea mail merge, right? You're just replacing the things with your form values. And that way you don't necessarily have to know any HTML. But let's look at this piece. So I'm going to open this one too, because here's an example for evil levels, right? This is in that value piece. I assigned moderately evil, the value mod, evil, regular, and super evil just became super. So if we look at when I merge it in here, I'm doing two different things. Can you see this clearly? So that's just the regular thing. That's what every user saw when they filled it in, super evil. And then this one is that modifier piece with the value. And I'm just assigning it as a class, just because I wanted to, I don't know, show an example of how you can start to mess with this as much as anything. What it does is it builds this little graph. Can I ask you a question, Tom? What's the difference between pulling in the value and pulling in just the form? Like, what's the distinction between what you have after that title and then having the one with the value in it? What's the value of the value? So literally, let's look at this example. In this case, we chose regular. This one right here. I may have written that by hand. So that may be a bad example. Let's do a fresh submission. All right. So we can see exactly what happens. You're born. None. No weaknesses. So we'll do moderately evil, right? So that is the regular thing that's going to show up when we say evil level with the colon eight, right? That's the thing that you see when you submit the form. That's the thing that's going to show up there. Now remember, I set the value of that to be something different. So when I say value, it's going to reference the thing that I assigned here, which is regular. So if we made you evil, it's going to do reg. So it's the same field, but two different options. If I don't modify it, it'll be the normal level. If I do modify it with value, it will get the value if assigned. Does that make sense? It does. And then where does that come in useful? All right. So yeah, let's actually look at it then. Sorry. I'm trying to find something that's not giant. We'll do this, kid. You're looking good there, Jim. Young. All right. So there we go. We got this. All right. We got our image. And then what I'm doing in this case is I made a div with a particular class, and it's going to shade it in based on the idea that the class is mod. So moderately evil, I think I said to be 30%, but you could do lots of different things. This is the idea of if you wanted to do a URL to a GIF or just about anything, this is where you can do it. So really, those are parameters of values you're passing in for a parameter, whether it's CSS, a URL, or some other kind of function that's going to be working with it. Is that fair to say or no? Yeah. Yeah. It's the stuff that you might use in a different way than what you want to show people. And what that is can be anything, which I don't know, I think is perhaps not clear enough, but is kind of the interesting part of it. We could layer images in a couple of different ways, but at the same time, you're just interacting with words. It's just a way to kind of make it easier for you to build the stuff in scenarios where what the person filling out the form sees and what you want to use are not quite the same. Got it. Now, I'm trying, when I see that, I know the title, but I'm not thinking about why I would need a value. I'm not making that translation in my head because I'm not a programmer. And that's something where if someone could say, I know why I'm going to mark this value because I'm going to do something with this later. So that's a part of having a bigger vision. So I understand that. But knowing why one would do it in the event that I get to a point where I would need to do it is useful for me. Well, and another scenario might be like, I think you talked about getting information from Wikipedia via a short code. So this could be a scenario where, I don't know, you know what the URL is that you need or that piece of the Wikipedia URL that's inherent in the short code. And it's slightly different. Maybe it has a dash instead of a space. And so you could write, you know, Caesar Romero here, but you could do Caesar Romero lowercase with a dash as the value. And then it makes the connection to the plug-in without you having to hassle with writing a filter. So for known things, that could be really useful. Or two, like it lets you hide bits of complexity. Like you said, like you felt like the advanced post thing was getting kind of crowded maybe as you go along here. If you put some of that complexity in the value field, maybe a chunk of that goes away. So I don't remember some of the other things that you were using, but you know, if you wanted like a rating system, and for each of the ratings you wanted a particular image, like this is an R rated movie, and you wanted the little R thing from the national motion pictures thing. Like you could have that image as the value, and then it kicks it in that way. So it's just giving you different options to play with as you collect data, because what you show people doesn't have to be the same data that you use. And that flexibility just kind of opens up things for you. And I didn't even put in a rating system. I gotta add another field, see? It's getting bigger already. It's awesome. Thank you. Entertainment. Yeah. All right. And I think like that's the deal. What you can see is I'm just shaping this visually a little bit. You know, I put stuff in divs. It's nothing too exciting here. I'm not trying to teach you like in-depth CSS, but you're going to walk that line between what do I want to do and what am I willing to learn. And as you kind of go back and forth, you know, you'll probably run into some scenarios where you want to kind of take an extra step, do a little bit more. And CSS, we'll let you do that either in the old school thing or, you know, even full-site editor still has some options to customize the CSS in ways that you want. And you can also use the CSS that's built into whatever theme you're using. So that's something to consider as well. And you may have noticed like what I do a lot is right-click and then choose inspect. It may be slightly different. This is in Chrome, but that gets me into the world of CSS down here. And I can just play around with things sometimes. And that's a tiny little step where you can learn stuff. Like, what happens if I unclick this? Or if I change two to 12, you know, so you can play around with things in a non-destructive way, and it helps you learn. And then if I want it to make that change, you know, I can essentially just highlight and cut and paste this into my custom editor, and now I've applied that change. So it's a little dipping your toe into the CSS stuff if you end up wanting to do that. But, you know. I stuck with ugly background image CSS, which I was very happy with. Well, and you talked about how would I, you know, do different themes for different product types. And I think you do it through a combination of those two things. So we talked about the conditional short codes as merges. So you'd be doing some of that. You know, you'd kind of break it down into your media types. And you just wrap whatever is conditional about DVDs within a, is this DVD? If so, show it. If not, let it go. Is it record? Is it book? Whatever. Like, those are your big chunks. And then you have the ability, too, to do little things there. Like, if you wanted to do a different background for records versus VHS versus whatever, that's where classes come in. And so you could say, like, all right, if DVD. And this is where value would be a little bit easier. So you can make the class all lowercase. Make sure it's all one word. And then you could set a different background depending on the parent kind of divs class. So that's how you start to get a flexibility in looks and flexibility of data display. So that value in each of those, you know, fields would translate into, like, a CSS value, right? So that also is a gigantic difference in terms of format for me to understand why I would use it, why I'd keep it lowercase, why I'd keep it one word, et cetera. Right. And that's what I'm doing here, is I just took the evil level. And that's why I set the values to, like, short things that were lowercase just because that's how I tend to do classes. And then when I merged it, that's what I'm using as my class. So if you look right here, that's all that is. Evil level eight value is just the class. So there's nothing in the actual div. It's empty. Got you. Okay. That makes sense. Could you also do class equals red? Yeah, you can manually write it in. But it would be the same on all posts regardless of what level of evil they chose. So that's not what I want. I wanted the, I wanted the graph to vary. And maybe I didn't show that well. But if we look back here, like we had you at whatever level of evil, let's 30%. Yeah, let's look at some other people. So we got Cheetah. She's at 70. This guy was an earlier version before I clipped it out. He was at 100% brainiac. But you can kind of see how things started to evolve and how I started shifting things around. There we go. Yeah, that's helpful for me just because now I'm understanding, okay, now when I'm getting into design and other features down the line with this form, those values could really come in super handy. And it's also the kind of thing you might use in a redirect. It's just another tool in the arsenal. Don't worry about it too much if you're like, I can't think of a reason to use that. That's cool. Don't use it. Just maybe remember in your back pocket that it's possible. But I mean, a lot of this is I'm over providing for you because I don't know in general what people are going to need or want in this scenario. So I'm just trying to work you through. So you'll at least have a glimmer of, oh yeah, like a month or two from now when you're doing this, and you're like, I really wish it was more like this. Maybe you'll remember that possibility exists. And I can ask Tom or I can Google it or whatever and then go back to it. So, yeah, it's probably a bit much. But what is it? Yeah, I mean like, and I mean, keep in mind too, like we're using these things in post-creation, but everything we've used here, the conditional short codes, the value stuff, all of that can be used both in the confirmation emails, as well as the redirection messages, you know, redirection URLs, all of those things are available there as well. We haven't gotten deep into that aspect of things. But when we do confirmations, those are the emails. And we can have as many emails be spawned off of this as we want and send different data to different people. But it's the same deal here. This is the website part, sorry. But same deal. We can make the message with all that stuff. We could send them to a page with different query parameters. And again, remember, we can take advantage of all the stuff WordPress has built in, or we could send them totally outside to someplace else. So, you know, lots of different stuff we can do with confirmations, and then lots of different stuff we can do with notifications. I do want to remind you, because I think I got some emails like this this morning, make sure that the subject line here tells you where this is coming from in a way that you'll remember. Otherwise, you'll have no way to turn it off in the future. You'll just get these random emails from a gravity form someplace, and you won't be able to make them stop. It's like when things update for WordPress or plugins from various servers I have installed stuff on as tests, I'm reminded to go back and delete them or come to terms with them. And it's usually like, you know, Jim Groom portfolio on what server, where, you know. Right. Yes. A couple little things here, too, to take note of is like you can set the reply to, this is super valuable. If your WordPress email is coming from something weird that you don't have access to or don't check, you know, I can set this to, you know, something else that I do check. And that way, when somebody hits reply, it'll come to me instead of whatever email this server is using. But all this should look familiar, and it can be controlled in the same way that we're doing it with the posts, you know, absent, you know, external CSS stuff. But, you know, I find this very useful and inevitably people like emails about stuff happening. This is also the scenario you can set up if you have posts going to draft mode, you can let certain people know what's going on there. So does anybody have any questions about confirmations or notifications? That stuff makes sense. I'm not seeing anything in Discord, so. Yeah, sure. What other advanced, like when you talk about advanced plugins or advanced kind of features. So if we've gotten to the point where we can create a form, we have folks who can get notifications, right, or send out confirmations, right? At what point do, like one of the things we already kind of alluded to is integrations, right? And I imagine when you talk about advanced plugins, we're using the advanced post creation, which I imagine is advanced plugin. What other advanced plugins do you find yourself using and why? All right. Well, I definitely use the Slack integration. So I won't show you our work Slack, just because I don't know, people might get weird about that. But as you can imagine, you submit a thing and then it alerts the Slack channel that you've designated. I can show you the general setup here on the WordPress side of things. Because it's not anything sophisticated as long as you have administrative access to the Slack channel. You're just able to map the gravity forms to the individual Slack channels. And I'll show you the two ones we have. So in this case, I'm under settings and I'm at Slack. I have two different ones. So depending on what people choose in our form, whether they say they're faculty or students, it goes to two different channels. And I'll show you. So we're going to send a message to a private group. And this is where I format the message. I think earlier, I sent a couple different things about how this is Slack markup. But that's what makes it look particular ways. And you can see I added little emojis and things just to try desperately to make these a little more fun. And here's a list of all the stuff it could go to. Yeah, that's pretty cool. And it's basically like you're doing the same thing as a notification or advanced post-creation. But this time it's for Slack. Yeah, that's all there is to it. It's really straightforward. And when you have the basics of the gravity form stuff, things like that are no problem. What else do I use? I have used user registration in a couple of different ways. I did a more complex thing where I actually built sites. And if you're using it with WordPress multi-site, you can have site creation be part of this and structure kind of that whole thing with as much sophistication as you want and have approvals or not have approvals. That's all possible. Let me show you what that looks like. Yeah, I'd be interested in what does that look like for a WordPress multi-site in that regard? Yeah, so let me think which one I'm using here. So I got create user rather than update user. And then I've mapped the different things that are required in this registration. So to do this, you have to have a field that you map to the username. You have these optional things, you know, the basic stuff. You have to have an email and you have to set a role. And that's pretty much all there is to it. You can decide stuff, like create a new site, when it registers, send an email when this happens, enable user activation on this scenario. I think I have one set up a different way, but like that's the control you can have. In the scenario I described, maybe at the beginning of this, what I had happen was, like for one faculty member, what happened, it was created two posts, you know, like a user profile post on the site, on the root site, and like an alias one, so they could do some sort of guessing, get to know you game. And then later, when she came into entries, let me get one with entries, what it would do, maybe I don't have it here, what it would do though, is when she assigned the team field, which was an invisible field, it would create a site with the team name and assign the user to it. And if the site already existed, it would just assign the additional users to it. So you can get pretty crazy with the level of flexibility there. I think maybe this is the one. Yeah, actually, you can see, because I have 55 entries, right? Because I had to do a lot of testing, but this is the one that does that. So I could go to view Aquaman, and what you're going to see here is they signed up for all sorts of stuff like course term and course section. And then when I assign them to a team here, they got assigned to old goats. And I do that by clicking edit, and then I can change all this stuff and then save it. And then what it does is it creates the site old goat and adds that person to it. So yeah, so you also like the other thing that's interesting is the collection of a whole series of metadata for, you know, as you're bringing people in, you're creating a kind of multi site, you know, with a kind of feature around portfolios or pro like, you know, some of this stuff can be pre populated and like you're putting out a form and then there's your portfolio on a WordPress multi site. Correct. Right. Like you could really just have people filling out forms and using WordPress multi site to allow that and then giving them editing possibilities on the other side. But you're talking about a scalable portfolio program with, you know, some of these features says you could do a lot. Well, absolutely. Like if we had this at the start of rampages, when people signed up, we'd have kind of forced certain profile data into it either through their entry or by querying VCUs kind of API-ish type things. Because we did it backwards. Like we would do a little call to like see if the name showed up or if the email address showed up when you did the search for the faculty directory. And if it did, we would label them faculty. So we did it retroactively. But we could only do it when they went to like do something because we were worried that we would, you know, get in trouble with VCU and that we would crash the system by trying to run, you know, all the people at once. Does gravity forms automatically know when you're using WordPress multi site or is there something you have to set up in there? Like how does that work? It knows. Nice. It knows. And you need to run it. I think it runs best when you run this particular scenario on root. I don't think, I think you can get around it, but you have to go through some hassle to do it. I think I did it with York in Sweden. For Karlstad, we managed to get registration on a non-root one. But as I recall, it's been a couple of years. It was like a little bit of a hassle. So user registration and site creation, awesome. You could do structures around naming. You can gather additional information. This is great for reporting. You can build it into the user profiles in all sorts of different ways. Like there's some real powerful stuff here, especially if you're using it with BuddyPress, like you can map all that stuff out and make it a really pleasant experience. I think that's the other thing too. You have control over user registration without having to hack around and rebuild registration, which is what we did with BuddyPress back in the day. Because if you recall, Garner didn't like the feel of BuddyPress' registration. So we did some really ugly coding to bring it back to another thing. So you could do better instruction. You could guide people around aspects of privacy. You really have a bespoke environment here, but without the need to learn how to program all this sophisticated stuff because it's not what WordPress shines on. It's like custom registration workflows. Yeah. But I mean, thinking about it at the scale of WordPress multi-site and doing some of that stuff, knowing you can work on user and site level and take care of all that, but in a custom way that allows you to kind of control the entry and the experience. But then also for a single WordPress multi-site, like you want to have a school newspaper site, a lot of that could be controlled. Almost like you go here and this is the form for your thing and your sports writer, it knows that it has all that data. You put it in, the drafts go. And it's just like a whole series of forms. Like the Internet is not a series of tubes. It's a series of forms. Well, and it's a bit like what we did with the open ed stuff Brian Lam is doing with UBC kind of broadly. Like we had a form where you could pick particular templates. And the NS cloner piece, Gravity Forms tied at a cloner would copy particular themes, plugins, and content. And that's what they used when they made the new site. And then it also logged that that site was made off of the template. So you had the template kind of idea, description of what it was for. And then you had examples of all the sites that were made on the multi-site from that. So you can start to really knit together a lot of the stuff people have said they wanted over time through various combinations of Gravity Forms and some other stuff. Yeah, that's pretty elegant. I mean, I had thinking about the obviously the newsletter, and that was a simple example. But like, it's almost like that, but at a scale, like beyond that, right? It's not just about a post or a series of posts for, you know, a site. You know, it's about an individual using this to create their own site or create their own experience or create their own app. So that kind of sense of scale and what's possible with these advanced plugins really does, you know, open up and light some more fires kind of just in terms of why Gravity Forms. If you're trying to do this stuff with a scale of university, faculty, students of not in the hundreds, but even the thousands or et cetera, you know, it becomes quickly, you know, a remarkably agile toolbox for someone who can't program. Right. And I mean, I have it running on two sites here. I've made two multi-sites on our midcreate Domaino One's own thing, one for H5P and one for Pressbooks. So like rather than installing that as separate things for each faculty member that just wanted that, they can just go there, do the registration through the Gravity Form in a nice, succinct, controllable way. And all it does is kick them through, give them a multi-site, you know, sub-site that already has that plugin activated and like the themes or whatever turned on. And that's, that's how I solve that problem in both those cases, just dead simple. It's true. It is true. No, I like that. I like the idea of like thinking as an ed tech and thinking about like, how are you going to do this stuff and scale it, you know, given that resources can be tight and what tools you're going to put in your toolbox to do that. And that's kind of why I wanted the Starwood Gravity Forms and I'm more and more convinced that this should be almost ground zero for folks who are familiar with WordPress and want to build on that for a broader community. Well, and I guess I'll talk about one more advanced plugin that I used regularly and that's the Webhooks one. I don't know if I have access to an example right now, but let me show you what Webhooks looks like. I think I turned it on for... Now, I guess like the easiest thing to say is like, why would you turn this on? And this is where you can just like tie into, this is when you're getting serious in different ways. There's a pretty simple explanation of how to tie this into Google Sheets. But, you know, I don't know these days if you would need that or not, but to have this data replicated in Google Sheets on the fly, you know, might be a thing that you want or to tie it into just pretty much anything in the world that has some sort of API interactions. This is what's going to let you do that. I could think of an interesting one. So like Azurecast and open source radio software has Webhooks. So theoretically, you could do a form where it's like request a song to play on the radio and it will push that song to Azurecast and the DJ will get the last or whatever. Like, so that's kind of pushing or posting an example of a hook into another application. Does that make sense? Yes, yep, yep, yep. But it's just like I can take whatever from the gravity form and, you know, shove it into whatever accepts things and whatever pattern that thing accepts it. You know, it was kind of fun to map it to Google Sheets. I think in that case, what we use Google Sheets for was like just to drive the live graphing. Just because I was being lazy, I think maybe. That's probably it. Or we did something else based on the Google Sheets entries that we couldn't do easily in WordPress. Maybe we created some documents based on it or a folder and then shared a Google folder based on the email submitted through the form. So like you can just kind of push the data around in whatever way you need. Well, with a good example of, folks, if you're doing, say a faculty member or someone is doing work with students and one of the tools they're using is Twitter, right? But they're kind of pushing out through a certain thing, a kind of tweet-length thing that goes to Twitter through the form, but also saves that and is allowed to kind of, like, I don't know why you wouldn't just use Twitter directly. So I understand that argument could come up right away, but just say it because students don't want to be on Twitter. They can have a general user where they're doing it for a project like, you know, the history of Florence as seen through, you know, a particular Medici's eyes. And that's the Twitter bot. And so someone goes in, does some research, and they tweet what they're doing based on their research with a link. And that becomes a collaborative effort through this form that all pushes out to a Twitter. Does that make sense? Like, is that one of the ways one could use webhooks through a form for a class? Sure. Sure. And I think, like, think about anonymity in that scenario, but without the necessity of giving, you know, either figuring out Hoot Deck or giving passwords to the centralized Twitter account. Like, this is the methodology that cleanses it. And it keeps the data that you would need for assessment in a localized place where you're not spitting it all over Twitter. Like, so I think it can be a place that that cleanses and keeps data that you need while still taking advantage of these disparate places. It's just a nice middleman for scenarios like that. And so webhooks can really be thought of as a particular API-driven form of syndication where you're taking content, for example, that we have with AzuraCast, and we're hooking that in to Twitter. So anytime we go live on AzuraCast, which is drives DS from the sixth radio, there's a webhook that says, hey, Twitter, this user is going live playing this song, right? And that's structured data that is then translated through the webhook to Twitter. And so that really, like, clicks as a way to keep your content. It's like the posse idea published on your own site, but syndicated everywhere. Webhooks would allow you to do that with gravity forms in some interesting ways for class projects where you really don't want folks on Twitter in the same way maybe you once did as individuals, but maybe as a class doing research that's kind of framing that experience would be more interesting and controllable. Absolutely. Absolutely. I like that framing of it. And it's just like anything else. You got the one action for gravity forms and whatever data. And then these things just let you take that data and do more stuff with it. What do you want to do? And what are the possibilities? We can make a post with that data. We can email that data. We can send that data to a different API to do a thing. It's just amazingly flexible that way. No, I do. I like that framing of webhooks. And webhooks is something I toyed around with and I understand it in some ways. I mean, understanding is always an overstatement when it comes to me. But seeing these examples and understanding this integration potential again is another, for me, door of this application plugin, whatever you want to call it, that I just wasn't aware of because I kind of stuck with WordPress as I knew it as a blog. But this becomes a really powerful engine. So yeah, thank you for that. Well, this is where I'm hoping you and whoever's still with us here can help me out for like we've kind of painted some broad strokes for some of these things. But are there specific... Do you want to know how to make webhooks to gravity to Google for the sheets or like anything else? If people will help me figure out what they want, then we can plot kind of this final episode. Do we want to dig deeper into maybe more sophisticated post-creation with integrating short codes with variables and you want to learn some more about CSS there? It's hard to walk the line between like, am I getting too deep into stuff people don't care about? Am I getting too complex into programming things? If you want to see about after-submission hooks and gravity forms, it's like actual programming, we can attack something like that. I'm just trying to get a better sense for where people want to go because I mean, there's a hell of a lot of depth in an awful lot of places. Just, you know, help me understand where you want to go. It's interesting because Annika, who Annika has been watching, big fan, thank you, we were worried here, we were out, we were out at sea hoping someone could buoy us. But yeah, I think doing webhooks for me would be fascinating. Like I love the idea of like digging in a little bit deeper on post-creation and some of the like more advanced bits of like hiding stuff and short codes and maybe pushing us to try that this week. And then taking that post and saying, okay, how are you going to then send it somewhere else? How is that going to hook into another application? I also personally, along with Annika, I'm very interested in creating a kind of a form. So now I'm thinking beyond the library of like a historical like figure or frame that other people write to. And then it goes to Twitter. Like I am interested the Slack integration. So I'm with Annika and I think Taylor's on board too. So that makes four of us. Like I would love to play a little bit with advanced post-creation, but also then pushing it somewhere through webhooks or some other integration would be fun. Does that make sense, Tom? Yeah, absolutely. Oh, Zendesk too. For us, I mean, that's very practical, but webhooks and to Zendesk for reclaim. And I'm sure Annika works with Zendesk at St. Norm. I mean, there's a lot of like, I think the webhooks digging into that a little bit would be useful. I guess webhooks wins. People have spoken. And there's, they're almost, they're equal if not more than us. So I mean, and we can do something maybe specific to Zendesk. My only problem there is I don't have Zendesk. Yeah, I mean, maybe Taylor can bring an example with Zendesk because I have a feeling Taylor could figure out a webhook or two. And he could demonstrate that. And maybe Annika, if you want to play with a, with a, so this is great, we brought you in so that then for the next session, you'll have to be on stage. If you could play a little bit with a webhook and just say where you've got, where you're throwing, I'll do the same. I'll try and do some of the Azura Cast webhook stuff that I talked about. That would be fun, I think. Yeah, I think like that's the sooner you can make it like something real for yourself, the sooner it will become effectual. And that's, that's the tricky thing. I mean, you see like I'm bouncing around to different examples and recalling various times. But I mean, this is over, I don't know what, like 10, 12 years I've been using gravity forms probably in a variety of different scenarios, which is one of the reasons I feel comfortable like recommending it people. It's because like it has been a go-to tool. And like with webhooks, it keeps you from having to start from scratch, right? It's got aspects of the thing that you need to do already built. Like how do I get the data from the people? Well, they just fill out that form. You don't have to build a form from scratch. And then this beast just takes that data and makes the connections. And that's why I keep relying on gravity forms. It just saves me huge amounts of time. And it provides really nice middleware for me between a variety of different platforms. Yeah, and Taylor makes a good point of it's a good way to kind of scratch your teeth very basically on APIs or bite your teeth into those or whatever you call that. You know, I'm not doing it, sink your teeth into it. But also, Annika, to your point, I've never done a webhook before either. So we're in this together. And it doesn't have to work because I rarely do anything I try. But like I just like the idea of wrapping our head around it. And then also seeing in Tom, I'm going to bring your screen up. Also seeing that like it's possible to play around with some of this stuff, even if it doesn't work, just like I love the conversation here today about what's possible with WordPress multi site, site creation, user registration. Like sometimes the world of the possible makes the practical stuff you need to do that much more interesting because not knowing what you can do oftentimes you won't do anything. Right. And it's another one that like definitely if you're ever confused, check out the documentation. Because it's pretty solid stuff. Often there's examples of how to do this in particular ways. Like this is something I think that was brought up previously. You know, the event calendar has a webhook piece. And so like they've got an example of how to do that and breaks it all down here. Yeah. So, you know, there are lots of examples. There's WS DEX and not Zendesk, but I imagine the patterns and stuff are pretty close. And I think what you're saying too about this being an intro to APIs is the deal like all of this is basically an introduction to programming at different levels. When you do that mail merge thing is very close to writing PHP templates, you know, or any kind of templating. Like it's the same pattern of thought recognize the pattern, get comfortable with the things that look a little weird and realize like when you have to do a thing versus when you have a choice. So that's one of the reasons I really like it because like I didn't program for years. And I just use this and I got pretty far. But I also establish the kind of, I think, understandings that let me learn how to actually program when I finally got over myself. Yeah, write plugins, design themes, like all the things that, you know, seemed outlandish 15 years ago. It seemed insane that I would ever write a plug in. You know, that's madness. Like that's what you write in an afternoon. You want to plug it by 3 p.m.? Right. Right. I mean, that thing I wrote for you just then like total time invested 12 minutes, including the blog post. And like, it's once you get a little momentum, like that's what I try and convince people is like, if I can do this, you absolutely can. Like I'm not saying like if you have 12 jobs or can't find food or anything that this is a way to spend your time. I'm not saying that. I'm saying intellectually, anyone who desires to do this and has the time to spend can certainly do it. It's not this elite level thing that only magical people can do. There are no rockstar programmers. Like that's all nonsense. You can absolutely do this stuff. Yeah. Yeah. How are the people? Yeah, recline that tech form of awesome. So take the form of awesome. Well, I will. I think they're magical people. Just no magical people. Especially like programming is relatively trivial. It's interesting people coming up with interesting ideas. Like it's amazing how many technical people can't solve a problem. You know, they're like A plus B plus C. That's how they do things. Well, maybe lots of people programers regardless. Like I think the fun part about this is you can do it in a lot of different ways. I just saw this like tweet series on like video game programming. And it was like, you know, just the crazy things they do to make video games work because it's all about problem solving. Like in order to make damage happen on a tank or something, they just minimized a bunch of people and made them invisible and attached them to a tank. So when you were shooting the tank, the way it was getting damage was by killing these tiny invisible humans. You know, there's just like bizarre ways to solve problems like that. And that's what I think is fun about this stuff. Yeah. No, it's cool. You know, that's all right. That's awesome. And we are magical, Annika. Don't you forget it. This is magical thinking on DS1 and 6 radio. Actually, no, this is reclaim and test. This is not DS1 and 6 radio. All right. Well, this is awesome. We're at an hour 20. I think if we, Annika, Taylor, we will follow up with this on some of the webhook stuff and a little bit more of the advanced post creation kind of maybe hiding fields, some of that stuff. That's some of the homework I'm going to follow up on some of the stuff we talked today. And then also going to play with a webhook. And that will bring us into week four and hopefully a grounding to do more. And, you know, I would like to also return to another Gravity Forms flex course, frankly, whether or not we go to the next level or keep playing on it, but I do want to kind of keep this as a somewhat regular check-in for folks who are playing with this to do stuff with that. So I'll talk about that more next week. But Tom, thanks again. That's week three, advanced plugins of Gravity Forms and more magical thinking on Reclaim at Tech. Last words. You can have last words. Poster asked me questions. Please, I'm begging you. You know, I would love to have something to connect this to that you're actually doing rather than just being like... No one cares about PHS and that's all I'm posting about. So people really, you should... I will. I'll do work for you. Like it would make me happy to solve a problem with you, for you. You know, just let me know. Give me a hint. General directions. Anything. You know, we're eating rice over here. Come on, people. I got no faces to look at. I can make Jim happy, but you know, like that's... That's intentional. I don't want you to get distracted by faces. It's part of the plan. All right. Well, signing out. We will see you all next week. In the meantime, create something beautiful, be magical, big fan, Reclaim at Tech, what life is.