Web Process Consulting | Recurring
Gavin Taylor: Good morning. Morning.
Chris LaFay: Good morning. Let me push save on this real quick. Actually, I'm not going to push save on that. I'm gonna let that sit there for a second. Hi. How's your week been?
Gavin Taylor: It's going good. It's going good. Killed me last week with the germs and stuff. But we pushed through it and we're good.
Chris LaFay: Is Kimberly joining us today?
Gavin Taylor: Yes. Awesome. Okay. I just invited her. Yep, there she is.
Chris LaFay: Awesome.
Gavin Taylor: So, yeah, I wanted her to kind of listen in. I know last week we, I did a lot more info dumping, gave you access on ClickUp stuff and hoping you have some golden dogs for us.
Chris LaFay: Yes. So we're gonna dive a little bit technical this time.
Gavin Taylor: Okay.
Chris LaFay: And so I want to, I'm going to show you some code stuff and I know that you're not like an in depth coder, but understanding some of these things at its core I think will, will help. So I'm going to try to not go super deep. But also I want to start. I did a little bit of coding this past week as well to just show you a couple of the basics of what things could be like. So I chose a couple of very simple examples to show you how challenging some things are right now versus what they could possibly be like later. And so I want to go over those with you because if we can get alignment on what of your theme can be actually automated, that is going to make the process a lot. That's going to basically that's going to determine intake forms, what data you give to the, to the developer, whoever it is to do that initial like sweep through as well as like automating, some content importing and stuff like that. So I'm going to do some screen sharing here to kind of walk you through kind of stuff that I'm looking at here today. So I was about to run some other commands but you know, you shouldn't test things five seconds before you hop on. Like once it's working, you don't mess with stuff. Stuff, five seconds. So I took my own, I took my own medicine and my own advice here, so. All right, let me organize my screens a little bit better.
Gavin Taylor: Hey Kimberly, do me a quick favor. Everything on here, please take notes. I know we have the AI stuff going, but let's take manual notes too so I can focus on all the technical stuff.
Chris LaFay: Okay, got it.
Gavin Taylor: Thank you.
Chris LaFay: Let's see here. So which screen do I need to share? When everything's in dark mode, it's hard to tell which is which,
Gavin Taylor: but it saves your Eyes so much.
Chris LaFay: It really does. There we go. That's not what I want. I want. Cancel. There we go. Now let's try this again, shall we? There we go.
Gavin Taylor: Much better.
Chris LaFay: I can see. I want this whole screen there. Okay, here we go. So expand that out because I would like to see this too. There we go. Before I dive into this, one question for you guys. Tell me, give me like the 60 second rundown of what you do know about coding.
Gavin Taylor: Best way to explain it is I would be a MySpace Pro right now.
Chris LaFay: So you understand CSS?
Gavin Taylor: I know CSS pretty well. Okay, that's, that's mainly. Now I know a few things here and there with high level, but the most part is I, I can throw together some JavaScript and that's my, that's my limit.
Chris LaFay: So. And I'm also assuming that you understand the basics of like PHP code is backend stuff that accesses database things. HTML is the structure and then CSS is the style that, that kind of flow makes it great. That's, that's honestly all you need to know for what I'm gonna, what I'm gonna walk you through today. So what I really like about this theme that's been developed is that you have named blocks that say exactly what it is they do. When you're looking at this, by the way, just so you know it's not going to be formatted really well, this is a local version of my, of the theme that you sent over. So I obviously do not have all the context needed. So if it looks broken, don't worry about the brokenness. That's not the important factor here. This is great because now all you have to do is you just drop in one of your pre named blocks that has basically the outlines already created for you and then your person just goes in and just swap, swap, swap, swap, swap, swap, swap, swap, swap all day long. The downside about this structure is everything is a manual meaning like take the meet the team for example. You have to then go in here one by one and one by one, button by one. If you want to have any team members on other pages, you'd either have to go and duplicate this block and put it somewhere else, but then if they change now you have to go change it in multiple places. And I realized on the team section of repair shops this stuff probably isn't the most up to date thing anyway. But the concept of when you have underneath this patterns folder you have what, 40 or 50 different building blocks. Even though probably doesn't change on a weekly or monthly basis. There's other elements in here that could possibly do so. And the idea is how do we make this as simple as humanly possible? Which you have a better intake form, you fill out data one time and then the building blocks of your site, you don't have to go edit one by one by one by one. And so there's things in here that I notice that are, are problematic that could very easily be solved. I'm going to show you one of them. And this is a little bit of coding that I did this week. So here's the front end of the site right now. And you would say that this navigation bar pretty much looks spot on. You have your address, you have Google Maps as link there, you have your dates, phone numbers, all that jazz. And then down here in the footer, quite literally the exact same things, two separate spots. You have a header template and a footer template. So whoever's going in the back end and making these changes, when they read the intake form of here's the address, phone number, Google Maps link, etc. They're making that change in two different spots. So yes, what needs, what needs to happen? You have this LJ theme settings here which has kind of like domains and some images. What we need to basically create on the back end is the intake form. Okay, so here's your address right here. 1234 Main Street, Smellville, Georgia 7 8. Let's do for kicks. And Google's Tuesday through Thursday 10 to 2. And then the phone number is 404. And then the just text only phone number is 123-123-1234.
Gavin Taylor: There we go.
Chris LaFay: So now that's all updated. When I go back here and I click refresh, we now have all of this stuff updated in one fell swoop. And now if you scroll back up to the top, we have all of this updated here too. 404. And then if you scroll down here inside the content, that phone number is also updated.
Gavin Taylor: That to me makes sense. That's what I want because we just had another website go out and we found out on one of the location pages, freaking, there's a phone number that just was randomly there. I don't know where the phone number came from. So this would help that tremendously.
Chris LaFay: So this is a small sample size. So let me show you, let me show you one other thing. And this is a little bit, this is, I'm going at a slightly different angle. So inside I'm gonna, I am gonna go ahead and dive into code a little Bit here.
Gavin Taylor: Okay.
Chris LaFay: What powers the word. What powers A block editing WordPress site is a file called theme.JSON. and a JSON file is just an array of data. It's data points, the data points inside of data points, et cetera, et cetera, et cetera. Right. This is stuff that seems minor on the outside but ends up being problematic later in your core theme. Here's your color palette. Your first color is literally named olive green. What if your main color isn't olive green? What if it's blue? Because. And the reason. The reason why this matters is in your CSS file. So all of these custom black button, background white, custom card, dark green. All of these slugs of colors transition to variable colors. And so if you use words like primary, secondary, tertiary, rather than olive green, custom card, dark green, but you have primary, secondary, tertiary, all you do is you change one color in one spot and all of your CSS across the board is automatically done. Like the colorations of it at least. And so now I know that you said for one of these, like this button, you just always use this red color. That's fine. Have a custom, like have a line in here somewhere that's like local jungle red. And you use that CSS variable everywhere when there's a button now during setup. And there's ways to take. This is the part where it got a little bit more complex. I didn't dive into actually coding this, but there's ways to basically have this theme JSON file, even though it's a physical file inside the theme. There's ways that you can customize it on the back end of WordPress. And when you save those values, it then injects them into this file so that all the WordPress automation stuff goes all nice and magically. So again, it's more about. It's more about thinking through. Let me ask. Let me actually back up one. One more step. And I'm gonna have it on this computer. I don't have it on this computer. We talked a little bit yesterday, not yesterday, last week, about like page automation, so. And stuff like that. And the other thing to. The other thing that I do, and I couldn't duplicate this on yours and the amount of time that I had. But have a good example, because I have an example on my laptop. So what happens when you have ideas in the middle of. Middle of a call? So there's. When we create websites, we create something called a block library page. Now, this is not. This, this use case specifically is not going to be as important for You. You don't need to create a block library page. That doesn't matter. What we do is every block that we build, whether it's a custom block or whether it's a combination.
Gavin Taylor: We've actually talked about this. We've talked about this and we need this because if we don't use a template, we have dug cut some sites. For example, if you go to duncan's auto.com. we just did that. That's a. It's kind of built off of it. Oh, it's not live yet. Never mind. This is the one we'll be doing. But anyway, we. We want to have that library as well. Because if we need to go and drag whatever stuff over, that's what this template was built for. Is. So we had all those blocks built out.
Chris LaFay: So let me actually. So let me. In that case, let me actually. Do I have this on this computer? I don't really want to go get my other.
Gavin Taylor: And you can see the updated version because live. If you go to. What is it? Templates. Local. Jungle. Website.
Chris LaFay: Local.
Gavin Taylor: Hold on, let me. Let me type it. I don't know why, but once I start typing it, I can boom a bit. Is that muscle memory? If you're working on websites so much, it's like, I don't know what it is. I just start typing it. It's there.
Chris LaFay: Huh, huh, huh. Years.
Gavin Taylor: There it is. Just throw it out. Chat. So this is. He went in and fixed all like those issues that you were seeing on that site. And this is like the actual one that our developers would go in and copy now.
Chris LaFay: Yeah.
Gavin Taylor: Okay. So same site, obviously, same coding. He just went in and fixed everything. Yeah, but like, I see what you mean. If you scroll up just a little bit to that dark green background. Yep, right there. That's an about us section. So it would have it about us headline and content and we can just drop it in there, meet the team. I don't really want to do, to be honest, because I hate this section anyway. There's so much back and forth with the clients about it. It's honestly a waste of time. I hate doing it in general. This right here, the nuts Trust index. So I don't want to use the plugin, but we could just throw up a custom like a dynamic block where we can just add the Trust Index slider code and it just places it and that.
Chris LaFay: 100%.
Gavin Taylor: Yeah, I'm on the same page with you. I fully understand what you're talking about now.
Chris LaFay: Awesome. So. And like, also the other thing I Saw like this here. I'm sure that maps are on multiple different pages. The only thing that's different from page to page is just literally the dimensions of it. So the idea of storing the, the, the URL portion of the embed in a custom field that's in one spot. Then you drag a Google Maps block where all you set is the width and the height and it just goes off and pulls that one URL.
Gavin Taylor: So then like oh, there is one thing that I do want to talk about with that. So with the maps. This is one of Craig's nuances. This is one of the things we will not be able to automate because he's so far into local marketing he honestly cares how zoomed in out we are with the map and it's dynamic based off of the clients. So like if it's a European client to be larger. So I don't know how to address that part but I understand what you mean about like the page sizes and everything and the whole idea is just like the Google business location for it.
Chris LaFay: So all of this being said, so then the last part of what I wanted to show you is I'm going to actually let me. Okay, here we go. So when it comes to automating content and I don't necessarily want to, we don't, I don't want to dive super duper deep into this but this is more just of me showing you what's possible to get your brain turning a little bit because you know more about your clients than I do at this point.
Gavin Taylor: Yep.
Chris LaFay: So one of the things I've created recently for myself is the automatic automated building of a block library. So when, when you create a site and you activate the theme, it goes into the themes folder and it grabs all of the custom blocks and all of the patterns and puts them on a single page with their title and their description. It's all automatic now. Did it take some fussing with to do 100% it was not as easy as do these two things and be done. My, my, the reason I say that is because of the fact that you're at the end of the day you're going to have patterns that are customizable. These are ones that are basically just like pre built Gutenberg blocks and then also a handful of husband blocks where you don't control the HTML code. It's already done for you. You just plop in data points. The idea since you know what all the blocks are going to be the idea of having on activation, the creation of certain pages using different layouts is a possibility. So hypothetically let's take a, a Mercedes bit like a pa. Like a page specific to a car type. I'm making this up. This doesn't have to be locked in stone by any stretch of the imagination. You know that a car type page, the sections of it are going to be a hero section followed by an icon card followed by the coupon card followed by a big phone number followed by the award section and lastly followed by the contact us section. You know that's what a core card layout for that's going to be. And so those pages could be dynamically created when that theme is activated for you using the blocks in the library. Now you would start to go put content into it but it would then cause there to be less again.
Gavin Taylor: We're trying to get going. Yeah, yeah. So this actually helps us with the PPC pages. Now the reason I say that is the, the main like se, I call it SEO pages. The, the vehicle pages on the website, mainly content, there's like a couple of images on there, but it's just content. We don't really care about it. The PPC pages, however, if we have, let's say on the main website the vehicles sometimes are the PPC pages, it's more so the services. We have the service page build outs for SEO. Could we dynamically make it so? Hey, if these are the active service pages, we create a PPC pages just like you said with this block, this block, this block and this block already.
Chris LaFay: So one of the things that we could do is actually let me see if I can pull. Is this, is this, is this legible?
Gavin Taylor: Is my mind's already going like okay, we're here. I'm, I'm way over here thinking about this. I, I think I have a really good grasp of what you're doing here.
Chris LaFay: So not going to dive into the weeds of what all this stuff is. But this is a, this is, this is a script that runs when, for my themes. When the website, the theme starting over. When a new site is created and you activate the starter theme, this function of code is ran. So what you're going to see here, you're going to see a mixer of Gutenberg blocks as well as ACF blocks, like custom field blocks. So all this being said, here's a header, here's a content with paragraphs of different font sizes, small, medium, large, extra large, xxl. Then we have, let's see here, the different button types that we have at our disposal. Then we have the core enhancements that we have. Let's see, where's that legit one. Here's some case study data and it's going to populate an advanced custom fields custom block with that case study data already in there, because it added it in there for me before all of that being said, I'm not going to dive any deeper than that is. If there are core page layouts that you want to have at your disposal, there are ways to basically templatize that in code and give yourself buttons on the back end that say, build this page for me. And it would then pull that template and be done. So.
Gavin Taylor: Okay, let's jump forward this really quick. I know we only have. Wait, hold on. We have like 30 bucks, right?
Chris LaFay: Yeah, we're out. Yeah.
Gavin Taylor: Okay. Okay. Okay. So here's where my brain has gone with this. In the WordPress settings menu, you had one where. Hey, we change whatever. Can we. Well, my headset is. Let's say what pages does the site need? Like have a vehicle page, we have a list of vehicles, have service pages, we have a list of service pages, and we have list of ppc. Actually, that would be post perfect. And we could put in the slugs of those pages. Hold on, I'm. Okay, so where I'm coming from is I have a document called our URL structure. Why am I on full screen? I don't like full screen. And if we could make this into a WordPress settings menu. Can I share my screen for just a second? Yeah. Okay, so we have.
Chris LaFay: Do you mind zooming in a little bit about four or five clicks?
Gavin Taylor: Yeah, yeah,
Chris LaFay: perfect.
Gavin Taylor: Okay, so let me move this out of the way. We have service pages, vehicle pages, and PPC pages. Whenever I give our developers anything, this is like the core pages that we give them. We give them. Okay, here's the page title, the page, the slug title, tag, and meta description. If we could create this into the settings menu and have a button at the end of it which would be the trigger. So we make sure everything's in there. We press that button that says save or run or whatever, and it runs that script to go out and lay out the pages. So the service page has the. Oh, this is a. Yeah, so the service page runs it with this layout. The. I don't know why my computer is going slow down, but either way, I think you know what I'm talking about.
Chris LaFay: Yeah.
Gavin Taylor: So on a high level, I know that's coming down to the developers building out the script and everything, but on a high level, would that be possible?
Chris LaFay: Yes. So I would actually. The way that I actually recommend doing it is I would actually not have it in the back. I would not have it to where you type everything in the back end of WordPress. I would actually have you type it all out in Excel and then you upload a CSV file and say go.
Gavin Taylor: So we can use basically this.
Chris LaFay: Yeah. Yes. Because editing it in WordPress is just not. It's going to take. Could you do it? Yes, but it's going to take you like three times as long to type in rows and all that kind of fun stuff like that's a pain in the butt.
Gavin Taylor: Okay.
Chris LaFay: So. And what we would actually, what we would honestly do is we would.
Gavin Taylor: Oh, you're getting me excited right now because all this I could have Kim do is you talking about that single person doing most of.
Chris LaFay: Bingo.
Gavin Taylor: Kim can do a ton of this. Logos, just different content here.
Chris LaFay: Like that, with the, with the theme options and stuff like that. Like I did like five lines of very basic text based stuff like uploading the logo. The logo shouldn't be. The logo should be uploaded once and done. So like this, the way that this would actually work, what you have here is I wouldn't actually worry about dividing it up into different tabs. I would add another field to it that's a drop down menu that basically said that's a template type of page.
Gavin Taylor: Yeah.
Chris LaFay: Yep. And so then it would go through and create all of those pages and then it would pull the appropriate template file of building blocks. Now the thing is that you have to be. That you would have to be careful of and to know is that the way that WordPress can automatically build pages. Actually I'm going to go back to share my screen again.
Gavin Taylor: Okay.
Chris LaFay: And you don't need to understand this at a root level. You just need to understand this at a very, at a very high level. Because I am going to talk a little bit more about code here because
Gavin Taylor: I think I'm staying caught up with what you're saying now. So like I don't think we're going too deep at all.
Chris LaFay: Great.
Gavin Taylor: I don't know code but when I like really get myself to look at makes sense.
Chris LaFay: So the thing to know with how WordPress programmatically creates pages and this is the, this is the sticky part and why it, why it's simple to do but it's not easy is that if you look in this code you can probably tell here this content variable, it's just adding more. This dot equals means tack on more HTML code. So imagine that you're in the back end of the page, you're in the code editor view. That's the view that we're looking at right here. The reason I say that is if you look at this like let's take this custom field block where all you have to do is you fill out form like a form field. You don't actually do any htlike drag and dropping stuff. If you notice it has a name, which is important, but then it pulls in this variable of various different data points. Imagine if you change one of your blocks and instead of calling you had a columns field, which by default is a three column block. Maybe you added another field for toggle button off and on. I don't know. Making this up, is that button notated in here at all? It's not. So if you update your blocks, you also have to then update your script. Okay, which, which is a bit of a pain, don't get me wrong. But you have to balance the idea of being able to do things quickly. And sometimes doing things quickly does involve multiple steps when larger changes take place.
Gavin Taylor: So let's back up really quick just to make sure I'm understanding that. Are you saying update that? Okay, so this, we're off of the script now, right? We're on the actual blocks itself. So the HTML blocks. So this is post script putting the HTML blocks in. You're saying if I change the template block or I would then have to go and change the scripts of the automation.
Chris LaFay: This is where AI really, really, really helps you because so I, I've done this with my own like starter theme and whatnot. I basically have I in my own theme. Kind of at the root level of the theme is I have this like readme file that that AI reads that basically says if you make an update to a building block, I need you to also make it over here in the script as well too and make sure that they're one to one and so far it's been fantastic. Now my sample size is small, don't get me wrong, but that's where this. I'm also assuming that you're probably not going to be making a thousand changes to your, your page templates. So like, I also, I, I want to bring up the, the friction point, but I don't want to overly emphasize it because you're not going to make that many changes to it at the end of the day. Like once your template's been built. Your whole template's been built.
Gavin Taylor: Yep.
Chris LaFay: And you're happy with all the sections. You're probably not Going to change it that often because the goal is that's
Gavin Taylor: the biggest thing and that's what we're doing in March here. March is a big process month. So the template that you saw is Tempo one, if you will. We have another one that we're having built out now.
Chris LaFay: I would pause that if I were you. I would pause that because if you wanna, from a development perspective, if you're
Gavin Taylor: about to get multiple.
Chris LaFay: Why not? Why not? Like, why not basically transition this one theme. I'm gonna speak in overly simple buckets here. Transition this one theme to where you have stuff that's more automated, like you know, the phone number blocked or just pulls in the phone number and that's all it does. Get all of those structures down pat. Then take that theme, duplicate it and apply some different styles to it because. Because then you're gonna have one of
Gavin Taylor: the problems that we have. Yes, I understand where you're coming from. So here's the caveat to this is in the auto industry with the clients that we're bringing on, they are in a very tight knit circle and they could be anywhere in the country. But the people we're working with likely know each other. And the reason for that is because we only work with the top 5% of repair shops and those 5% usually have these coaching programs just like me and you. We would know all the marketing guys, all the website guys, they know the auto guys and they're in the inner circles and stuff. So when we're doing this, they catch on very quickly. If we're using the same core template and we are basically telling them, hey, yes, it's semi custom. But when I say that we're using, building another template, it's the same core thing like you're saying, right. With a different layout. So I'm going to share this with you really quick. This one's not, this is one that we have used in the past and it's a proven one but now it's just down to optimization of it and doing the exact same thing as we did. Okay. With the other template. So this template, while the header is essentially the same, we have blocks are completely different but in the same way the same. So yeah, we're doing, we're doing the same thing. We're reutilizing blocks where we can, but it is in essence a defense template.
Chris LaFay: So here's. So when I look at this, scroll down to the, the team section, I'm just picking on team because it, it, it's simple and it, and it proves My not proves, not proves my point like a negative way but like I know on and you don't need to switch over is fine because I know what the other one looks like. So on the other one you basically have the where toward this grid layout. It's contained within the content size the image, there's actually gaps inside the grid and then the name and job title is below the image.
Gavin Taylor: Yep,
Chris LaFay: that's just CSS changes. You could literally use the same. Let's pretend that was a non Gutenberg block and you actually you own. You owned the HTML code for like a custom block. You can make both of those layouts with just CSS changes.
Gavin Taylor: That's what we're trying to get to is all custom blocks.
Chris LaFay: Now it's some. I wouldn't recommend all custom. I would never recommend all custom blocks 100% because you need the flexibility to just drop a two column block on a page and type in some text like you need that.
Gavin Taylor: So we're running into a problem right now and I think I talked to you about this before but page speed is a huge, huge thing to Craig and recently we have seen page speeds across the board drop and by quite
Chris LaFay: a bit drop meaning they become lower and they are better.
Gavin Taylor: No, meaning they're increasing the. They're slower, they suck.
Chris LaFay: Okay, cool.
Gavin Taylor: It's out of nowhere, no updates, nothing's have been done to them. But all of a sudden we're 20 points down on psi like page speed insights and I have no idea why. We have a lot going into this. But my point to all that is if we can eliminate as much of the bloat anywhere we can, it helps us in the long run. Which brings up to the point is obviously additional code requires additional loading. With what I have in mind, basically we go and optimize the site right this side's see it's not even clickable. I hate that. Basically this site I would say is about 50 ready to be a template. We need to go in, make a lot of optimizations to all these blocks to basically pre, pre optimize this site, do everything about it. Because we want a 90 plus performance score on mobile non cache which is already a very hard thing to do. But having the additional code and stuff. Do you think what we're talking about now is going to negatively impact that
Chris LaFay: in terms of building more custom blocks rather than more Gutenberg stuff?
Gavin Taylor: Well yeah. Which one do you think would be better? I mean not easier but better long term.
Chris LaFay: So looking, hearing all the things that I've heard so Far this is the. The way that I would like to see this done.
Gavin Taylor: Yep.
Chris LaFay: Is you've already have. You basically have already audited the number of different blocks that you need. The patterns folder is full with like 50 different things. Right. What I would like to see done is I would like to see you have a single parent theme that has all of your blocks with using as minimal HTML code as possible, basically so that your CSS can power it. And if you have unique ideas for different layouts, for the coupon block, let's make those different layouts toggleable. And inside of a child theme is where you have all of your side by side customizations. Because what I'm hearing, if you're worried about page speed, and I hear that you're already creating a second template that won't have. That will be kind of a carbon copy of the structure of template one that I have now. You have two very separate themes that you now have to maintain. Make a change on one, you have to make a change on the other. That sounds like. That sounds like a problem.
Gavin Taylor: I think they might be. See, this is where I am ignorant and that because the parent theme, child theme, while it makes sense, I'm ignorant about how the developers have set this up, but I believe these are the same thing.
Chris LaFay: Okay. Right now, given that you don't have a lot of developmental consistency, the backend settings and stuff like that.
Gavin Taylor: Yep.
Chris LaFay: It doesn't matter whether you have it in a parent child theme setup. That's not 100% accurate. That's about 80% accurate. But I want to. I'm going to take page speed and push off to the side for a second.
Gavin Taylor: Okay.
Chris LaFay: Because no matter what route do you go, like the, the two routes that you're. You're kind of bouncing between, which is like WordPress, Core Gutenberg and then also mixing in some custom blocks. We're both talking about very lightweight things here. Now if you were talking about like Elementor and Astra and having good page speeds, I would say. Gavin. No, no, no, no, no. I've literally, I've literally stumbled across two websites in the last week that use Astra in and Elementor together and they are absolute garbage piles. Astro with an A. So there's a theme called Astra that has its own page builder and then they decided to partner with Elementor. So you now have to have Elementor and Astra loaded on the same sites and both of them are very heavy and people are like, why does my back end of my website load so slowly? I'm like you're loading two page builders. That's why. Anyway, I digress. We're not here to talk about other things. The reason I do tell that story is the fact that both of these building styles are fairly lean. One is you're building with native WordPress. Native is good. Two, you're thinking, we're thinking about doing some things in custom building blocks that have custom HTML code as long as they're coded correctly, which is not that hard to do. That's fairly lean as well. So we're not talking about a lot of big things here.
Gavin Taylor: So, so these are like very minuscule.
Chris LaFay: Like, okay, as long as, like when you're importing image, like when you're having like I'm going to. The simplest thing is to focus on images when you're building a custom blog that has images inside of it, making sure that those image tags are developed out appropriately to where they have like lazy load qualifiers and they have the alt text that gets automatically pulled in and doing like different source sets for different browser sizes and blah blah, like that's all fine. So like if you're using core WordPress functions to output those images, most of that stuff should be handled for you as is. If you're literally just writing a basic image tag with a URL in there and that's all you're doing, then yeah, you're going to have some problems. But WordPress has functions to handle all of that, which is why it's great. All of that being said is before another template is built out, my recommendation would be to audit the crap out of what of these blocks can be automated. So like for example, you have a, You have a contact form has is importing a gravity form which is already part of the thing. Like that's all fine. Dandy. Like that doesn't matter.
Gavin Taylor: Which is another conversation that I want to talk to you about another day because our coupon process needs fixed.
Chris LaFay: Yes. So like coupon, like let's take coupon cards for example. This is a great thing that can very easily be automated. A coupon lives inside of a custom post type, not just a Gutenberg block, which it is now. What, what does a single coupon have? It typically has a title, it has a description, it has some subtext that's small and then it has a dynamic expiration date because you don't really care when these things expire at the end of the day. And then you have a block that showcases in general the, you know, the most recent three coupons that are there and Maybe to make it look and feel a little different. Each coupon has a different expiration number of days. So like maybe one is plus eight days, one is plus 10 days.
Gavin Taylor: No, we don't care about that. It's always dynamically set at two weeks.
Chris LaFay: Two weeks, there you go. So like you have the, like there would be a default one of two weeks. But if for whatever reason on a coupon by coupon basis you wanted to change the default, adding something like that in literally takes 30 seconds. So you at least have the option. And then you have a custom block that then pulls whatever the three most recent coupons are in the database. And then when that theme is initialized, going back to kind of like creation and automation, you could pre populate the database with three coupons so that there's something there when you load the homepage for the first time. And then now you're just editing things at that point.
Gavin Taylor: There's a lot here that we're going to need to do. And it really comes down to what the script is able to automatically do. Because this is, I can tell you already, this is missing the deals of the specials page, which is just a page with all the coupons, right? This is just the top three coupons. Typically it's going to be oil change, whatever off type of coupon and then a service specific coupon. And then we have a deals page which looks just like
Chris LaFay: you about to share your screen.
Gavin Taylor: Oh, sorry, I totally forgot. Nope, you're good. Looks just like this. Now I also hate this because of this right here. We don't have a bunch of selling points for this. It's just easy $50 off axle on brakes. So this is basically what I would want the specials page to be. So with that being said, my point was when I go through an audit this right. I need to have kind of a baseline understanding what are the limitations that scripts, right. All code has a source of limitation and it's going to be, the question is always going to come down to is the juice with the squeeze. So when I, when I'm going through and auditing this, okay, like in my head, first thought is if we have something on the WordPress settings menu like hey, how many coupons are there? And this is coupon 1, 2, 3, 4, 5, whatever, right. And then here are the things I need a picture of that to be able to itemize these. Audit these.
Chris LaFay: Let me, I'm going to take over because I want to give you another, I want to give you another picture to think about.
Gavin Taylor: Okay.
Chris LaFay: Actually you might do this already. I didn't dive into this at all.
Gavin Taylor: This one we do have a custom plugin for, by the way. It utilizes patterns that we have for the coupons already. And then the problem is in the plugin. It's very finicky and it has broken in the entire site before for.
Chris LaFay: Gotcha. So because like the coupon has like the little modal box pop up and stuff like that. So.
Gavin Taylor: Yeah, yeah.
Chris LaFay: So this is for coupons and like, you're not. You're not doing it here. Are you doing it over here? I don't think you are. No, you're not. Okay. Okay. So to give you another visual right now you guys are using. These are called custom post types. So like models, everything in WordPress is a post, technically. Think about it this way. If you're saving content into WordPress, it is a post. But every post has a type attached to it. So this will help from. So if you look at pages or under the pages section, right. If you look over here in the address bar, which I realize is small, you'll see post type equals page. This is just a helpful. Just. You don't need to understand why they do it. But understanding that everything is a post helps with discussion. So these over here models and services are custom post types. So if you go back over here in the address bar, it says post type equals models.
Gavin Taylor: So this is just like the pages menu, but it's specific to model.
Chris LaFay: It's a way to organize things into like different, like, almost like think of them. This is not how it's done at all, but that's. Think of them as like you're databasing them in like different sections, if you will. That might be a better way to think about it. The thing is what you can do within custom post types and the reason why they're used a lot is because you can assign custom fields to them. So I'm going to just show you. This cannot, by the way, this can all be done programmatically. I was going to show you physically what this looks like. I'm going to pretend like your. Your model section of cars. You're more of like an actual, like automotive car parts, like an auto zone for a second. Just because I know the metadata better.
Gavin Taylor: That's fine.
Chris LaFay: So we can add different fields to this. So what I'm going to do down here is this set of fields is going to attach itself to. Post type. Yeah, sorry, post type, which is going to be model. So what are things that we're entering the custom Post type for model is going to be Mercedes with the page name if you will be Mercedes or Tesla. So this is going to be the model type. So this will be like the S series or whatever it is. So we're going to go ahead.
Gavin Taylor: I know this is by note, but what does ACH stand for? Acf.
Chris LaFay: ACF is Advanced Custom field. So it allows you to place custom fields onto something and something is very vague because you can actually apply custom fields to a lot of different things within WordPress.
Gavin Taylor: Gotcha. Okay. No ways.
Chris LaFay: And then for another one of these fields within a model, if you were selling car parts, you might be interested in the model type and also the year of that model year. Model year. Right. So this is going to be a number here. And then do we want anything else? Now we're just going to leave it at that. Then we're going to present these over on the sidebar of that particular thing, of that particular page. Now saving, you have to give it a title. This is going to be Model Custom Data Save changes. Now if I go over here to models and I go ahead and add a new model, we're going to call this Mercedes. And over here we have custom data points. So the model type would be an S class. I have no idea if that's actually a thing. And this particular post is about the 1998 S Class Mercedes. Now, why does this matter? Because this is very similar to the theme options panel that we just talked about. So let's say you have a coupon. Every coupon has a specific data points within it, right? There's the disclaimer text, there's the days till it expires. I know the default is 14 days till it expires. There's the description of the coupon. Maybe there's something else that has different information. When you put all this information into fields, you can have one custom block that dynamically places everything in the same location every single time. Another reason why this matters. Let's go back to the example you just gave me. We have the coupon cards on the homepage, which is a shorter view. Then you have the deals page, which is more of a longer view. With more data you could create all of those fields that you need for every coupon, both the long and the short version in one location. And when you drop a coupon block onto the page, you could say which coupons do you want to showcase? And do you want the long version or the short version? Basically, do you want it in a card layout or do you want it In a column layout. I'm sorry, a row layout. Or do you want in a column, like a pod layout? Ignore the words. I realize that, yeah, you also have them as cards. But like so now if you change this coupon here, it changes it in both locations. Or you could say something as simple as maybe we just. For, for coupons we just have an active or an inactive status and that's it. So maybe the block just automatically shows any coupon that's active.
Gavin Taylor: Okay, I'm good.
Chris LaFay: I'm trying to give you ideas is all. Like that.
Gavin Taylor: No, no, I love that. That's great. I'm waiting straight in right now.
Chris LaFay: Which is why like when you could do like when you. There's scripts that you could write that automatic, like when the theme is activated, it automatically populates like two or three coupons just so you can see like when you're looking at it, you can see here's what it is. And because editing is sometimes easier than creating new.
Gavin Taylor: And so assuming that the current one is not broken, that's what we have right now. There's a bunch of broken crap at. We were trying to just start new. So. Okay, cool. No, so what I think the takeaway here, and this is what I want, I would like from you moving forward is after each of these calls you give me an action item for the week. Right. For me to go through audit the site. Right. And then I have. So the reason why I choose Tuesdays with you is couple different things. Right after this call, I have my developer call. Right after that developer call, I have our website internal call with click. So if you give me like a breakdown or hey, this is what we talked about. Here are some things that your developers can do right now. Here's something that you need to do right now. It will just allow me to add, actually take action on all this stuff and make sure that to make the most bang for buck pay you right?
Chris LaFay: 100%.
Gavin Taylor: And I really like the way that you've been explaining this because WordPress makes so much more sense to me now. And I don't automatically hate it, I hate some of the things of it, but it, it makes sense. I still hate code, but I understand what you're saying.
Chris LaFay: So this is what I want you to do is I actually want you to actually want you to pause your developer working on template number two. I don't want you to waste money.
Gavin Taylor: Okay.
Chris LaFay: So that's the action item for them. The action for you is and I think this is going to be the best way to Think about. And you're not going to get this 100% the first time because you're so embedded in it. I want you to look through your site. A site and one of the core filters is this is. I'm not going to pull this up. This is actually a bad way to look at it because that's really ugly and hard to see what content is on multiple pages that's basically the same. So the phone number, right. The address, the stuff that's in the header in the footer, the social media icons in the footer. You could even think of along the lines of like what scripts are added at certain spots, those types of things. But also going back to like the coupons. Coupons are on the homepage, but they're also on the deals page. I would have had no idea about that. What are pieces and chunks of content that are either the same or basically the same? Okay, that's where we're gonna get. That's how we're gonna get started is because then we know where all of these things that are the same that are like across the board. Obviously we need to have fields for like, what's the company name, what's the company logo, address, phone number, hour of operations. There's more than that, I'm sure. What is the stuff that is globally visible about the client on the website? Then two, looking through each block, where is that developer content person doing duplicative, basically duplicative data entry. There's that because that's going to define what custom post types we want to create and what fields we want to have attached to each of those custom post types. That's the follow up to that. So like with team members, for example, what does a team member have? They have a photo, a name and a job title. What does a coupon have a title, a description, disclaimer and days till expiration. I'm sure there's other things, but those are the areas that I focus in on like over the last week or so. What. What does that breakdown look like then? That's going to help us define which blocks do we build custom. Which ones do we keep kind of like Gutenberg Able across the board. And also let's. The, the third piece is what are the types of colors and fonts? Because in general, I think we're probably going to want three colors. Primary, secondary, tertiary plus local jungle red, a header font and body font.
Gavin Taylor: Okay, I have one question really quick about. And I know we're coming to end here. So looking at this, right? The idea behind this is really simple. This is going to be the company name. These are going to be the competitors. Right now. This is going to be different for each one. Now, what I mean by that is when it's going to be a European thing, a lot of time we use service A, Service B, service A, Service B. Basically, this is oil change. This is kind of additional services plus an oil change. So. This is dynamic. These are dynamic. All this info can change. When we're looking at automating this part, are we able to create a table Inside of the WordPress settings menu that we can edit and at least have like. Okay, we know that those would be three columns.
Chris LaFay: Four.
Gavin Taylor: Excuse me.
Chris LaFay: Yeah, so I'm. Go ahead. So we're. There's going to be a couple of different ways that we want to automate some things. One, if they are globally used across the website and their data points, think like, phone number, address, all that jazz. Probably going to put fields inside of a theme options panel.
Gavin Taylor: Okay.
Chris LaFay: There will be some building blocks that we create that we want to dynamically pull content from the database. Think like the phone number field and stuff like that that I showed you.
Gavin Taylor: There's that and then that info into this. So, like, hey, this is who we are. This is our service. A question, Service be. Makes sense.
Chris LaFay: So there are the third piece. And this is why, like, you going through all these things, What I would like you to do is make assumptions.
Gavin Taylor: Okay.
Chris LaFay: And I will. Don't think too hard about the assumptions. Just make them. Because the way that this table would actually probably be best done is not in a theme options panel at the back end, but because of how. Because right now think about, like, if you were to, like, look at a list of fields, like top to bottom, like on a page. Not organize literally Field 1, Field 2, Field 3, Field 4, Field 5. Think about how long that page would be to put in 12 data points. That's a lot, right? And then how do you choose which? Like how? Like, so this block actually would probably be a Gutenberg block that we create. That's the templates. They're already within Gutenberg, but it's a shared block within Gutenberg. So if you drop that shared block anywhere on the website, it's the same data points. This is where I. I'm splitting hairs a little bit. And I don't want you to think
Gavin Taylor: about this next week because there's a couple problems that. And I do have a meeting right now. So love, love, love where we're at. Let's table this discussion next week. In the meantime, I will audit this template, get everything that we could possibly do, and we'll go from there.
Chris LaFay: Yeah. And just send it over as a Google Doc. If you can get it over to me before the end of the week, that'll give me a day to look at it. And yeah, just don't spend it, like, don't spend a ton of time trying to figure out exactly how it will all work. I will help you handle that.
Gavin Taylor: Okay. Assumption. We can automate everything.
Chris LaFay: Make the assumption of, like, we should automate this via the back end panel. We should automate this via a custom post type. Here are the data points and then chances are some of those are going to be wrong. And that's okay. That's why I'm here.
Gavin Taylor: Okay.
Chris LaFay: So does that sound good?
Gavin Taylor: Fantastic. Kimberly, go ahead and create a ClickUp task for me as we're hopping into this next meeting and I will get that done probably tomorrow.
Chris LaFay: Okay.
Gavin Taylor: Okay. Thank you. Thank you, Chris. I appreciate you.
Chris LaFay: Catch you later, man.
Gavin Taylor: Bye. Bye.
Chris LaFay: Bye.