 So I'm here today to talk about theming WordPress. Just to give you a little intro onto who I am, I am Beth Tucker Long, I'm from the US. I'm a PHP developer, I run a consulting firm, so I do a lot of various types of projects, including a lot of WordPress, Drupal and so on. So WordPress theming is a big part of what I do. I'm also a stay-at-home mom, so I work from home while I stay at home with my kids. I'm a user group leader, I run Madison PHP. And I also participate in mentoring and apprenticeship programs. And if you have ever thought about being a mentor or being mentored, come and talk to me afterwards. I'd like to get you hooked up with PHP Mentoring or another mentoring program depending on what you want to be mentored on. But mentoring is really an amazing thing. I've learned so much from being mentored, but almost even more so from being a mentor to other people. It's an amazing way to help someone else but also grow yourself at the same time. So I'm fine with questions at any time. These lights are really bright, so I can just barely see you all. So if you do have a question, feel free to raise your hand and wave it around a little bit so I can see you. But feel free to ask me questions at any time. So getting started, why am I up here? Well, let's start with a very typical story that happens pretty often in my daily life. So once upon a time, we decided to switch to WordPress or your business decided to switch to WordPress. Marketing picked out a theme. Everybody loved it. It was working great. It's perfect. It has all the features we will ever want, right? Oh, except then, all of a sudden we've decided we have a new campaign coming out and it's centering around the color purple. So now just for a couple of days, we wanna change these titles to be purple. Okay, fine. So we make a little tweak to the theme. Now the titles are gonna be purple. Well, we really liked the purple. So we're gonna keep the purple and now we wanna move this up. We wanna move some things around. We've changed the menu. We've tweaked the colors. Oh, now it's perfect again and we love it. Oh, but look, a security patch has come out for the theme that we were using. Okay, so obviously we wanna stay secure. We wanna apply the patch. We apply the patch and all of our beautiful changes, well, beautiful being subjective there because those were just quick changes I made for this example, but all of our beautiful changes are gone. Now, what's happened is, because we were making changes directly to the base theme, when we applied the patch, those changes were overwritten. Making changes directly to your theme is not an upgrade safe way to do it, but there is an upgrade safe way to do it and that's by creating child themes. There are other benefits to child themes as well. If you're using a child theme instead of creating your own from scratch, you don't have to code it all yourself. There is a lot of little fiddly stuff that goes into a complete WordPress theme and why write it all yourself if someone else has already done it and you just have to tweak it? So save yourself some time. It also means that someone else is actively working on new features for your theme alongside you, so there are more new features coming in that you don't have to build. It's also another set of eyes on security. As much as we all like to think we're really good about monitoring the security and testing our things, we get busy, we have other work to do and having someone who is actively working on the theme or a team of people for open source themes who are testing the security and applying security patches for you is really a helpful thing. So it gives you a little bit more security as well. It can also be really helpful with meeting accessibility and mobile guidelines. Again, there's a lot of accessibility guidelines out there and there are a lot of accessibility experts who do a great job of making sure that themes can match that. So let the experts do their thing and then you can take advantage of their expertise. So there's a lot of different things you can do with a child theme. You can modify the page templates to change the layout. So you need one page that looks different from the rest. You can create that custom page template to look exactly how you want. You can create new widget boxes, new menus. You can create different sidebars if you want or remove all the sidebars. You can do different things. You can even change the upload size for the images. So WordPress gives you the three default sizes for inserting images when the users come in. If you want to have different sizes, you can program those in so that the rest of your team who may not be as tech savvy at adjusting images before they upload them can now have the defaults built into WordPress. So how do we get started with a child theme? The very first thing you want to do is you want to make sure the theme you're using is not already a child theme. When you're going through the theme directory on WordPress here, you can see over the download. This is on wordpress.org in their theme search. You'll say it says this is a child theme of one line light. So if you're already using a child theme, we can still create another child theme of that, but we'll get to that a little bit later towards the end of the talk. So initially, you probably want to start out with a theme that is not a child theme itself. Makes things a little bit simpler. You also want to make sure you're starting with a clean copy and the latest version. A lot of times, people want to start a child theme, but they've already started tweaking the base theme. And that gets really messy the first time you have to upgrade the base theme after you've created your child theme. So you want to make sure you start with a clean slate. You're going to create a child theme directory. You can name it whatever you'd like. I'm fond of calling it whatever the original theme is dash child just because it makes it really easy to tell which theme it's a child of. But really, you can name it anything you'd like. So inside your themes directory, create a directory. And now we're going to add a style sheet. Now, an important thing to note with the style sheet. The style sheet for the child theme is going to be loaded after the style sheet for the parent theme. So your styles will be loaded last, which is nice. Your styles will then overwrite any of the parent styles as long as you use the same name. And so it's a way that you can modify those parent styles. Now some themes use inline styles directly in the code or in the templates. And your style sheet will not overwrite those because obviously the inline styles are going to take precedence. So those we can get to when we talk about how to update the page templates. But anything in the style sheet you'll be able to overwrite with your style sheet. There's a set of headers that you need at the top of the style sheet to help identify this as a child theme for WordPress. So you give it a name. Again, the name can be anything you want. And this is going to be the name that shows up at the very top when you go into appearance and you're choosing your theme. This is the name that's going to show up there. So unless you're making your theme public, you don't really have to worry about it too much. The theme URI, again, it's not really that important what you put in here unless you're going to be marketing your child theme. So you can generally just put in the theme where you're installing it or leave it as example.com. The description, again, is more if you're advertising it on wordpress.org. That's the little description paragraph that shows up. You can put that here. The author information is whatever you'd like it to be as well. So these things are not overly important what you put in there if you're just using this privately. But if you do ever intend to put it live, that's when those things become more important and when they become public. Otherwise, nobody will see these. It is important though that your header block be unique compared to other themes out there. So you want to try to make sure you've customized it a little bit so it's not too much the same as others. Now the template line here is where it starts becoming important what you put in. The template is going to be the parent themes directory name. Now most parent themes use their directory name as their slug for everything. But you can also double check if you look in the style sheet for the parent theme, you can see what their template is called as well. But generally it's gonna be the directory name. Version and licensing again are not too important. One handy thing though with the version is that it can help with caching issues. So if you need to bust the cache and make sure your new styles get out right away, you can increment the version number. If you don't include a version number, it will default to the current version of your install of WordPress. And so then your style sheet version will match the version number of your WordPress install and so it will increment every time you upgrade WordPress. But like I said, if you use your own numbering system, you can force it to refresh the cache which is really handy. The tags here, these tags are actually from a pre-approved list of tags from WordPress. I've included the link here. So you can't just type whatever you want in for the tags, you should choose off the customized list. It doesn't cause an error currently if you type in something that's not on the approved list, but always a good idea to follow the rules just in case the next version complains. And lastly, the text domain. This is another thing where you can sort of make up whatever you'd like. It's a good idea to make it as unique as possible, but unless you're using internationalization or multiple languages on your site, this text domain doesn't really come into play. The second file we need to add to our child theme is going to be a functions file. So it's gonna be called functions.php. Now the functions file is loaded in a different order than the style sheet. So the function file is going to be loaded first, and so it's loaded in addition to the parent themes functions file. What this means is that if you wanna overwrite one of the parent themes functions, you can't do it by just putting in a function with the same name because the parent theme will be loaded after and it will overwrite your function. So what you wanna do is make sure you give the themes in your functions file customized names to prevent them from being overwritten by the parent theme. I will say as a side note, there is a way for your parent function to check if your function exists first and then not overwrite it if you've already created it, which is a really nice thing for theme developers to do, but most don't do that yet. So you can check your parent theme and if it has an if function exists, call then it will not overwrite your function. But like I said, you can't count on that and you never know if the next upgrade is going to include that. So I think it's a safer idea to just make sure you have a unique name. So in our functions file here, you can see we're enqueuing the styles. Now you may see things online that say to use at import in your style sheet to pull in your child theme, but that's no longer recommended and it's no longer recommended because what happens is browsers with the functions here when we enqueue them will load multiple resources simultaneously. However, if you're using an at import statement in your style sheet, it has to load, parse and execute your style sheet, then it will load, parse and execute the import line. So you can actually almost effectively double the amount of time it takes to load your style sheets in your resources. So this is much faster. At import currently still works. No guarantee that that will work going forward, although WordPress is pretty picky about backwards compatibility always working. So in theory, it will work for a very long time, but this is a better way to do it. So I'd recommend doing it this way. Just know that you'll see a lot of tutorials online that still tell you to do it with the at import line. So now you know what that's for. So what we're gonna do here is we're gonna enqueue the styles. So you can see we have the WP and Q style. We're gonna go through and go through each line here quickly. So I've given my function, I just called it my theme and Q styles. You can call your function whatever you'd like. Again, it's a good idea to have a unique name so you don't run into any conflicts. Generally the best practice is to call it your child theme name, underscore and Q underscore styles just for consistency. It makes it really obvious to everyone else what that function is doing. But again, you can call it whatever you'd like. Here's where you define the parent style. Again, this is what's going to match what's in your parent themes in Q styles call. And it's most often going to be the same as the directory name for the parent theme. But you may wanna double check their function call just to make sure, because not all of them match. Here's where we're actually gonna pull in the parent theme style. And now we're gonna pull in our child theme style. So you can see we just called it child style. Again, you can call it whatever you'd like. The get style sheet directory URI is gonna be the directory for your child theme. And then here's where we're going to list the parent style as a dependency. It's a good idea to always list your dependencies though these last three items are optional. So you don't have to list the parent theme as a dependency. This again gives you a version number if you'd like to version your theme to make sure if you need to get the cache to refresh or anything. And again, this will default to your WordPress version number if you don't assign it. And then you can also assign media like print, screen, et cetera. It defaults to all or you can specify it. And really, that's about it. Well, kind of. We at least have a child theme at this point. So at this point, if you went back into your WordPress admin panel, you'd see for instance, if you had tribal was your base theme, here's our tribal child theme that we just created. You'll notice that it doesn't have a preview image yet. That's pretty easy to add. At least once you've got your child theme up, just take a screenshot of it and then add it to your root child theme directory and call it screenshot.png and it will automatically populate that for you. So once you've activated it, you should be able to go through and everything should here at this point look the same because we haven't made any changes to the styles or the functions or the templates yet. So any of the style changes we wanna make now we can put in our style, our child theme style sheet. Functionality changes again are gonna go in the functions. And if we wanna change any of the templates, we can do that as well. What we do is you can create a new template by just creating a name of some kind. If you wanna replace one of the parent templates, say you wanna overwrite the header file or the footer. So what you would do then is you copy the file from the parent theme into your child themes root directory or match the directory structure of your parent theme and it will override the parent file. In the template file, if you're gonna create a new one, pretty much all you need to do is give it a template name in a comment at the top, following the WordPress commenting format. And one thing to note, when you're making your template files or in your function calls and things like that, there are two different ways to get the path to the files on the server. There's get style sheet directory and get template directory. And these oftentimes get confused because they're very similar with a key difference. Get style sheet directory is going to be the root directory of your child theme. Get template directory is gonna be the root directory of your parent theme. So it's important to make note of that. So if you're having some issues with something not changing when you think it should change, it may actually be calling the parent file instead of your child file if you're using get template instead of get style sheet. Now, if you need to add JavaScript to your child theme, which is a very common thing to need to do, there's a couple of different things you should do. First of all, it's a good idea to always place it in a separate file. That's considered best practice. It's not necessary. It's not enforced at this point, but it is considered a best practice to keep it in a separate file. And then you'll just need to go through and enqueue that file. So again, here we're just enqueuing just like we did with the other files. This time we're using enqueue script instead of enqueue style. And we put in, this time we're adding a script from the parent theme, so we're using the template directory. And then we can give it a version number. Now the true or false at the bottom, the last parameter there. If it's set to true, it will load the JavaScript line in the footer instead of in the header. If it's set to false, which is the default, it will load in the header. So depending on where you want it to load with the DOM, you can have it load in the header or the footer of the page. Especially when including JavaScript libraries, check to see if it's already included first. WordPress includes a ton of JavaScript libraries already, so chances are it already includes one. It may not be the version you want, but it may already be included. And this is a link to the complete list of what's included. Now a common thing to need to do is to get rid of one version of a JavaScript library and load a different version. Say you need a newer version than what WordPress has by default. It's always a little dicey on registering a library and choosing your own version of it because WordPress may complain, but depending on how much testing you've done, what you can do is you can use deregister and DQ to get rid of an older library, and then you can register and enqueue your own version of the library instead. So you can actually get all of WordPress to use a different JavaScript library if you'd like. For the admin panel, you mean? Yeah, you can re-theme the admin panel as well with the libraries. I believe it does it just in your theme, and you'd have to also do it in your admin panel. Like, you'd have to do a function to do it in the admin panel, but I'm not positive on that. I've never tried to change it in the admin panel, so. Yeah. Okay, so when you're starting with your parent theme, a couple of things to do, you want to, let's say they've come out with a new security patch. So we have our child theme, everything's working great, but we need to upgrade the parent. What you want to make sure you do is back up the parent theme and the child theme. Every once in a while, parent themes will upgrade something, and it's going to break something in your child theme. So you want to make sure you have that backup of the parent themes so you can roll back really quickly if you need to. Not all theme developers keep older copies of their themes, so that's why it's a good idea for you to have a copy of it just in case. It's a good idea always to compare the upgrade notes to see what they've changed. Sometimes they change how you call things, sometimes they've changed certain functions that maybe you've customized a step further, and so making sure you know what they changed can help you make sure your child theme is ready for the upgrade as well. And the last step I always run is I run a diff on the old theme versus the new version of the parent theme because their release notes don't always tell you everything they've changed, and sometimes innocuous changes that they've made may make a big deal to your code base. So I always run a diff on those files, any files that I've customized, so any of the template files or the style sheet and things like that just to make sure I catch everything that they've changed. A couple of other tips. When you are creating your child theme, document everything really well. Give everything consistent but unique names. Again, do not use at import, and I do have a link to a blog here where Konstantin did some time tests on things so you can see that it is faster to use the in queue. And I like to start with a starter theme. If you don't have a theme already in place, let's say you wanna create one from scratch. There are starter themes which are not designed to be used as a theme on their own but provide a really good solid foundation for you to build your child theme on. So they do a lot of the heavy lifting on the WordPress side of things for you, and then you can customize things from there. Foundation Press is a really good one. It's very, very mobile first. It's built on the Zerb Foundation 6, I believe right now framework. And so if you need a mobile friendly website, they've built this mobile first, and so your child theme is already almost done as far as mobile readiness, which is really handy. Divi is really helpful as well. Divi comes with a really awesome GUI customization panel. So if you have, say, another team at work who needs to make changes to the colors and the styles of your theme and you don't wanna have them contact you every time they wanna make a style change, you can base your child theme off Divi which has a GUI admin panel where they can change the colors for the various header items for the links and those kinds of things. And also gives them a place to add in their own custom styles where they don't actually have to interact with the style sheets on the back end. So you can give your users a little bit more accessibility for making their own changes without contacting you but still keeping your code sort of insulated from them. There are also ways to automate child themes. So if you have a theme that you've created and you love it but you wanna convert it to a child theme, there's a bunch of different things you can do. So there's a couple of plugins here. Child defy me, child theme creator and child theme configurator. The last one is a paid plugin. The other two are free. And these two are very helpful plugins but there are three versions behind now so they're considered fully outdated and no longer supported. However, they both still currently work so maybe they'll be updated soon. But the one click child theme will basically create a base child theme off your current theme and then you can just tweak it. So it does a lot of the like in queuing and the base stuff for you so you can really save a lot of time with that. The child theme check goes through and checks what you've changed compared to the parent theme. So it gives you a quick rundown of all your customizations that are different from the existing parent theme and that can be really helpful when you're getting ready for an upgrade. It sort of automates those diffs for you. Now I mentioned at the very beginning about if you're already using a child theme, you still can create a child theme. However, not in a traditional child theme way. So WordPress out of the box, they call them grandchild themes because it's the child of your child and grandchild themes are not supported out of the box by WordPress. So in theory, you can create a child theme and list your other child theme as the parent and maybe about 40% of the time that'll work. But you never know when it's gonna stop working and you never know at what point in your site it's gonna stop working. So you really need to do some heavy extensive testing if you're gonna do that. But luckily there is another way to do that and we can do that by using a plugin instead of a theme to create our grandchild. So what you do is find a unique name for your plugin. It's really important with plugins more so than themes even to make sure that your plugin names are all very unique. So go ahead into your WP content folder into your plugins folder and we're gonna create a folder for our plugin. We're gonna create a PHP file which is basically gonna be our functions but doesn't have to be called functions. In fact it's most commonly called the name of your file or the name of your plugin.php. And then in that PHP file we're going to put in this header block. So this header block is gonna look very similar to the one we put into the style sheet. You'll notice that we're giving our plugin a name, we can give it the URI and the description again. Once again these are not real important unless you're planning marketing your plugin on like the WordPress plugin site. If it's just gonna be a private plugin to do your theme then it's not super important what you put in there. Version number again helps with caching, the author information, the license and so on. The text domain again is gonna help with internationalization that's gonna be helping with multiple languages. And the domain path here is where you're gonna specify where your plugin, like the name of the folder for your plugin. After that we're going to, because we're doing a theme here, we're gonna enqueue our styles. So again we're gonna make a function, we can call it whatever we want. I tend to stick with the theme name underscore add styles as my function name. And you can see we're registering the style and then enqueuing it and then we've got the action to actually activate that. You can do templates as well this way so you can overwrite the templates via the plugin. What you'll do is you'll create a templates directory in your plugin. You can sort of leave them all in the root directory but it can be kind of messy with the automatic loading of them. So I strongly encourage you to create a separate templates directory when you're dealing with plugins versus themes. Copy over the templates you wanna change into there. And then you'll need to add a function in your PHP file to include those templates. So here we're gonna double check if the file exists in our templates directory, then we're gonna use that instead of the one in the parent theme or the child theme. So we will do our grandchild theme over the top of that. Okay, so to give you an idea, I'm gonna pop out of this for a second and we'll see how this works. There we go. Okay, so here is a sample child plugin and a sample child theme. So we'll start with the child theme and let me see if I can make this bigger. There we go. Is that readable? Okay, so here you can see I have a super simple child theme and I've based it off the 2016 base theme in WordPress. And all I've done is I've assigned a color to the background and then a color to the background of the main content area. So here I am making the background or the body background blue and the content background green. It's a very exciting child theme. I have my screenshot.png here so it will display a preview of it. And then in my function, since I'm not doing anything too exciting in this child theme that I've created, oops, it didn't keep the larger font. You can see here that I'm in queuing my styles and assigning the version and then I am activating it. So not super exciting, but it is a child theme and let me... Okay, so here is the 2016 theme and you can see now if we come into the dashboard, we're gonna go under Appearance to Themes. Here you can see my demo child theme and you can see the green and the blue preview because we added that screenshot. So I click Activate, back over here. And now our child theme is active. So I know it's lovely, isn't it? I'd like to point out I'm a programmer, not a designer. Yeah, but if anyone would like to hire me for design, you too could have this lovely child theme. Okay, so, but now let's say we wanna modify this child theme. Say this is a professional child theme. Use your imagination, right? So we've created a plugin here. So you can see I have my Beth Child plugin, also very cleverly named. So you can see I have, make this a little bit bigger here, I have my header block here at the top and then I've created the templates directory and I've activated that. So if we overwrite any of the templates, that will work. And then I've enqueued my styles here and then in my style here, I have very cleverly just swapped the colors so it will switch from blue to green. So now if we go back here, oops, go back here. So now we're gonna go under Plugins and so here you can see my Beth's cool grandchild theme plugin that I made. And I just click Activate and now if we come back over to the site, you'll see now we have a green background with blue content on it, very exciting. So you can see it is possible and actually relatively easy to make a grandchild theme. You just can't do it in the standard way of a normal child theme. Now let me see if I can switch back to this. More plugins, you mean? You can, the hierarchy starts getting messier the deeper and deeper you go. So you have to be more and more and more careful with how you do things and how you reference things. But it is possible. I can't imagine ever needing to do it but Jenny's hand shut up so she might be disagreeing with me here. Please don't, yeah. So, okay, so for example, WooCommerce is a very, very popular e-commerce platform and I have a lot of clients that use WooCommerce and a lot of them have purchased a theme for WooCommerce. Now themes for WooCommerce are child themes based off WooCommerce's storefront theme. Then they want to modify that but we don't wanna lose our upgradeability especially on an e-commerce site. We really, really wanna make sure that we can upgrade with whatever security patch they come out with instantly. So that's one time, like I used grandchild themes all the time because of that, so. It's what? Well, any sort of, there's a lot of base themes that people have built child themes off of and then clients like that child theme and then they wanna make changes to it. So it happens a lot more. It's not just WooCommerce, that was just the first example that popped in because I do that one a lot, so yeah. Yeah, any other questions? Let me see if I can switch back here. Yay, okay. So, as you can see, grandchild plugins are a little bit of a wonky way to do it but can be really helpful if you do need to modify that child theme. So I have a bunch of resources here. There are a lot of tutorials out there on how to upgrade child, or how to create child themes and grandchild themes. I would recommend making sure to use the tutorials that are linked to from the WordPress Codex because there's a lot of bad information out there about how to do it poorly. And so I would stick with the tutorials you can find linked to from the Codex. The Codex does have quite an extensive list of resources and things, not just WordPress and automatic resources but links to blogs and screencasts. So there's video ways, there's lots of different ways to learn it but stick with those resources. And how are we doing on time? Because now I left my presentation. 25 minutes? Okay, sounds good. All right. So my demo went a lot smoother than I thought it would. So I have a little extra time. Does anyone have any questions? Yeah, you could. Sure, you could but because the child theme plugin method is it's not as elegant and it's not as automatic so you have to do a lot of extra work to get it to work. So it's a lot easier to make a child theme if you just need a child theme. Also when you're dealing with plugins versus the standard child themes you lose a lot of the built-in GUI automation. So for instance being able to go in and customize under appearance all those options and customize for the themes. You don't get those with the plugins. With the plugins everything has to sort of be or you have to build the GUI yourself through your plugin in your plugin settings. But otherwise if you stick with a child theme you get the advantage of any of that GUI stuff that the parent theme has built in. If we have a what? If we have a WooCommerce. Yup, for the templates you mean? Yeah, so in the grandchild theme here actually I have it up right now. So you'll create a function to check your templates folder before it checks the other one. And so that's what this function is doing here. It's checking if the file exists then use our file instead of WooCommerce's or the WooCommerce child theme. And so in this manner you can create that templates directory and then anything you copy over just like with a child theme will overwrite that template. It's important to note though that again the functions that you put in here are not gonna overwrite the WooCommerce functions. So what you'll have to do is you'll have to create a custom function with a custom name and then in the template call your function instead of WooCommerce's if you're modifying the functions. But the template files you can do this way. Any other questions? Well then I guess we can be first in line for lunch. Oh yeah, I'm sorry, yes. That's fine. On Gutenberg? Is that a theme? Oh Jenny's raising her hand, yay. Thanks Jenny. I have not used Gutenberg so. Okay, so this is gonna be the fastest talk on Gutenberg. Sorry Beth. So Gutenberg for everyone who's doing WordPress or even using WordPress is a new editor that's coming into WordPress. So if you go to the admin panel of WordPress and then go to an edit post or an edit page there is going to be a new interface and that is what the project name is called Gutenberg. And so if you're in the WordPress community at the moment you will hear people talking about Gutenberg and the Gutenberg editor. So the one that we currently have in core is called the classical editor, classic editor. And what will happen in WordPress 5 which will happen at some point is that Gutenberg will become core. WordPress 5 will not ship until Gutenberg is ready so that is gonna be a big deal. Now there is a massive, massive argument going into whether the way when they ship it especially at WordPress 5 will depend on whether it will actually have Gutenberg on by default and just switch everything over or if it will detect whether it's an old site and therefore only new installations would have Gutenberg on by default. There is a plug in called Gutenberg free which basically deactivates Gutenberg and you can if you are looking at WordPress at the moment and you're thinking about newer projects then there's the Gutenberg project as a feature plugin in the plugin repo and you can use that to test it out. There's also a website called Frontenberg because we like our puns in the WordPress community. It's on my friend's site, frontenberg.tomjn.net which actually allows you to test out Gutenberg in the front end. It's purely to do a demo. It's not something that we recommend but there are speculations that basically we're going through a whole entire rewrite of the whole WordPress admin interface to not only surpass stuff like Wix, Squarespace and lots of other one, Medium and it's just gonna be like a new thing and that's where the whole React conversation came into play with WordPress and all this crazy stuff but yeah. That is a thing I personally suspect. There was a, someone threw around that Gutenberg was coming to court on April the 1st and I pointed out that's April's full day and it will never flow. I suspect the end of the year is more likely and there's like massive discussions. In fact, I'm part of a project in two weeks where we're gonna be talking about Gutenberg and there's gonna be like online Gutenberg discussions about how it's gonna affect like the whole entire WordPress ecosystem because it affects page builders, like themes, all the whole nine nights. Although saying that, themes is the least problematic point because like this is all in the admin section and that front end actually doesn't really make a difference. It's still taking out data from the same way but we're still super, super, super, super, super proud of our backwards compact standpoint so that is being fought tooth and nail at the moment so don't panic too much is what it is. There you go. So the classic editor will stay in for at least the foreseeable future as well. So you'll have an option to choose? Yeah, you'll have the option to choose and the idea is obviously, there's so many WordPress sites out there that have the old version of WordPress and our clients are just not going to pay us to like update to Gutenberg so that's where the pain point is so the idea is that hopefully, personally I would hope that we'd be able to detect if you already got these like custom meta boxes and you can confer over, then you can just like turn on the classical editor enabler or ideally what we want as developers is actually do at the config level so in WP config but that's all being debated at the moment so the debate's really hot at the moment if you're in the WordPress ecosystem. As PHP developers, if you don't need to care about it just let them argue because there's plenty of agencies arguing on your behalf. I tend to try to let other people just argue about it and let me know when you make a decision. Yeah, yeah, I will let you all know once it's a thing but one of the reasons why I haven't started giving talks on Gutenberg in the PHP community yet is because it's just far too much hassle and it's not settled down so once it starts settling down then that's where you'll start seeing Gutenberg being really pushed forward because everyone will need to know about it but there's lots of stuff like meta boxes have been putted over and Mullenwags has said that it needs to be feature complete so it has to do everything the classical editors now before we can even consider shipping it and usually we wouldn't ship it straight away because the whole of the community team needs to then tell everyone, hey, we are going to ship this so there needs to be a grace period as well otherwise we'll just make lots of people angry. Is there a way to avoid that? No. But it's new. It's new, it's shiny, it's super cool. And the other thing is like with the Gutenberg please don't be afraid of it because with WordPress the last time we upgraded the admin panel was like before I started on WordPress and that was a long time ago. So when we changed something it's a change for a very long time so that's why there's lots of considerations. Even the accessibility team haven't got their hands on it yet because they keep on alliterating what's going into Gutenberg so they're like the accessibility team are like it's pointless of us trying to make it accessible until it's settled and we know what we're trying to make accessible. Sure. Cool. There you go. It's an important topic. It's definitely something you do. I'm excited to know. Yeah. Awesome. You're welcome. All right, any other questions? All right. Again, the resources you can look at those later. I do have my slides posted. If you do think of a question later or you'd like to talk to me about mentoring or apprenticeships or user groups or anything you can find me on Twitter, E3BethT. This is a link to my user group and joined in talk feedback. This is the link to the feedback or if you just go to the join.in homepage PHP UK conferences right at the top. My slides link is on the joined in website so you can pop there to get the slides, the link to the slides, which are posted currently so you can download them right now. And also you could leave some feedback while you're there. If you'd prefer not to leave your feedback on joined in that's totally fine. This is my email address. You can email me questions or feedback, whatever you'd like. And thank you so much everyone for coming.