 Thanks everybody, go ahead and get started with automating WordPress development slides are already online So if you want to follow along, it's it's there's not a lot of code in these It's mostly link So it's not something you probably need to follow along with but feel free to if you need to if you'd like to So as Bill was saying my name is Chris Wigman. I'm a senior software engineer at WP engine where I'm working on local development tools So helping developers automate their tools quite honestly. I was I at one point I built better WP security which is now I theme security and owned by liquid web I had sold it back to them about six years ago. I've taught computer science at St. Edwards University I speak on privacy everywhere from word camp U-Trick those word camps in San Diego. I Make sure you next airline captain and do a lot of work with history So I've been around this word-priced stuff from a whole lot of different angles mostly education with a little bit of Aviation sprinkled in a whole lot of security and privacy But a lot of enterprise type work in those types of environments, which would brings me a lot of this automation stuff As we get going one thing to keep in mind with WordPress automation is good So long as you know exactly where to put the machine and WordPress kind of exemplifies this There's a lot of machines going in WordPress From the time we download the site to when we're developing what wherever we're working on the testing that project locally debugging that project Stakeholder review and deploying the project. That's a whole lot of places that we could possibly put these machines or these these Processes to help us automate what we're doing in WordPress This talk is going to focus very heavily on the plug-in side of things But everything should be applicable if you're building a theme or a site as well To zoom in on some of this a little bit more. Let's let's start with the first machine location downloading existing work Probably looks something like this your workflow set up a local server log into your remote server Copy files log in the database. Maybe you have a plug-in that you've already automated some of this Maybe you have a backup buddy or migrate DB Pro that automates your database transfer for you If not, maybe you have something like Navicat, which is a great database tool where you can drag and drop your database from one Server to another but you're probably already have automated some of these steps here But these are very common steps and we're still doing if you work on a WordPress site You're doing some function of these some function of this workflow some version of this workflow already How many folks have automated at least part of this? Okay, about a quarter of the room It's the easiest. It's probably the most traditional and most of our tools kind of do this for us By default for instance if you want to copy the files to copy a modern site The easiest way to do this is to use a modern tool local by flywheels by far the most popular at The end of the month I get to finally say this where we're like WP engines launching dev kit Which will be our own tool which will allow you to clone copy do all the automation itself Both of these tools allow you to basically press a button or run a command in your terminal Take the whole site update your database does everything for you Now if you're not with local or if you're not with flywheel if you're not with us Pantheon has a solution Some of the other hosts do I love to speak for names of what all the hosts are But there's so many hosts these days all of us seem to be working on similar tools check with your host and see what they have Maybe you just have a script to do this if you work for a university I worked for University of Florida last but we had two Monolithic sites one of the databases was somewhere around 28 gig So we had scripts that would allow us to pull that down and run the thing just without too much work You know, otherwise a new developer. That's a two-week process just getting them to copy the database So it automation comes in really handy on Work that we had to write ourselves. We can't go to WP engine say give us a database because it's a university We hosted it ourselves So there was a lot of scripts who wrote to do that But the trick here is at some level at some level of that initial process whether it's just the database or just the files You're looking for something that does a one-click setup That reduces external connections. How many passwords do you need if you've worked with a client? How many times have you gone back and forth? It's all I need this password. Oh, I need the namecheap password I need the host password. Oh, you didn't give me this password I need that now three weeks later. Maybe you're getting into the site and idea of these tools reduce that and Hopefully at the end reduce your stress level They're allowing you to develop that site quicker more efficiently and without that contact that to and from the client that makes you Feel bad. Oh, I forgot to ask you for this last time And that's really how the modern way that we're dealing with pulling these sites down and setting up our local environments You can't I mean most folks in here still you still might have map. You maybe you're using Examp, maybe you're using something else. These are all great tools and there's plenty of ways to automate them as well But the easiest way is to simply just use your host's tool if they provide it for you Plugins and themes are a little bit different WP engine pantheon Flywheel, we don't just go out and say hey Here's your host your plug-in with us Doesn't really work like that. You're hosting a website not a plug-in the simplest way to automate your plug-in Pulling pushing your plug-in development your ability to clone your plug-in locally is simply use the version control built-in If you use get you've probably automated a good part of this this this step already How many folks in here use get or SVN or something like that? So more than half the room if you're developing a plug-in or a theme with get that's by far Still the most efficient way you probably have to do this type of thing So when it comes to automation most folks are you already have some of this done you don't necessarily need to go through all of it But that's only part of it once you get it to the machine or once you're starting a new project It looks a little bit different. We've all seen this type of thing the hello world plug-in Every tutorial and starting a plug-in most workshops on starting a plug-in have some version of how do you get the thing to say hello world? Probably don't want to use mine from this example because it's just going to kill wordpress with WP die But it's the same basic example You probably you can find a tutorial here who's going to give you this and say this is a plug-in Great, where does the code go? What kind of code am I building that hello world is probably you know Maybe you want to put a version of hello dolly up there I know a lot of folks who have rewritten hello dolly, but that's probably not the end result of what you're going to do You need to put your code somewhere. What files does that involve? How do you handle all that? What if you need something like sass or CSS in general webpack grunt gulp some other tool to help build these assets? Where does all this stuff go? To start a project today. I don't ever recommend just creating a new file I recommend using code scaffolding wordpress by default has a great scaffolding system built into WPC li That allows you to easily reproduce your your template with every coder theme It helps you enforce the best practices So if you're a developer manager or you're simply working with a team of five or six at different skill levels within wordpress Using the scaffolding can help you implement those tools to keep that code at a at a consistent level across So one developer isn't developing one type of plug and you go into another one It looks like a completely different system you're developing for those problems slow teams down quite a bit They're very opinionated So you don't have to think about what what you're doing Especially with WPC li these are written by close to the WPC core team Alan Schlesera. I'm probably mispronouncing his name, but one of the leads of that project There's Daniel Brubaker another name. I'm sorry. I'm butchering names if you look these folks up But these are folks who have been working on this project for quite some time and work with the core core team to allow for These are the files you need to get started and here's a whole project spun up They add your testing automatically. So if you're using something like PHP unit in particular Running WPCode scaffold. I'll add PHP unit just a basic File in there so you can start writing your tests and all your build tools grunt gulp Whatever it might be depending on which scaffold you use are already there for you So things like sass you can just run one command after the plug-in setup and you're gonna have sass Setup for you. You're gonna have JavaScript modifications set up for you And it's a simple command WP scaffold allows you to build plugins Themes the themes are based on underscores if you're using something like Genesis We're working on something at WP engine eventually So you'll be able to do this with Genesis if you're using something like Trying to think there's so many theme frameworks out there these days But most of the major theme right frameworks either have this already out or some some sort of add-on you can do with their own scaffolding Blocks so if you're working on Gutenberg and you're trying to develop your first block rather than just Creating a JavaScript file in a php file. What do I do with this? You can create a block basic basic basic block code. Excuse me with just a WP scaffold command You if you have an existing plug-in and you're putting out versions of it How many people have pushed out a plug-in or theme and found it broke something that they had done six months ago? Yeah, new bugs. I crashed 20,000 websites when I launched I theme security version 4 It happens. I admit it It was a big lesson in testing for me If you have if you've done that you can start implementing tests implement unit tests acceptance tests things like that in this case This will add a basic unit test framework using something called php unit So you can write tests they actually say if this is your function in php test it is the end if I give it this input Is the output what I expect? So later on when you do introduce a new feature that maybe modified that a little bit You're gonna know if something broke you're gonna be able to tell if there's what they call a regression You've broken something somewhere else Of course theme tests can do the same thing and it can do a whole lot of more things. It can do things like custom post types All sorts of different things that the scaffold command can do you can read the whole thing at the WordPress codex developer dot wordpress.org So there's a whole list in there as well as the syntax to use this Now the description for this talk was how to get a plug-in going in one command and here's that command WP scaffold plug-in hello world and the this list on the right here is all the files this creates From our install unit tests that these two files here have to do with unit tests Some ignore files configuration editors get ignore more unit test stuff Travis which I'll talk about in a little bit grunt file If you're a JavaScript developer and you're panicking on grunt there are ways to work around grunt I know grunt is old. It's actually being redeveloped since about June of last year They've started development again, but grunt is mostly considered somewhat obsolete since about 2016 But there's ways around that Of course your hello world basic file Package.json to get that all installed more PHP unit and your basic readme file Everything you need to get going on a simple plug-in if you're sharing this if you need build tools notice This isn't your code. This isn't writing code for you It's making sure that every developer on your team has the tools to develop this plug-in correctly It's automating that that basic step on top of that It's automating the headers when you create a new WordPress plug-in or theme How many folks have done that and missed like the title in the right file or in the style that CSS sheet? You type it wrong There's a typo in there and it never shows up in WordPress in your WordPress admin This automates all those little steps for you all the little things that you shouldn't need to think about every single time You spin up a new project The theme outlier this or the theme outlay of this is very similar to what you have here Just a little bit of course it's gonna be a little different files for a theme and it does a child theme based on underscores so it's Slightly different, but it's all the same concept. It's giving you that same basic template to get started Of course if you wanted to add a post type to this if I wanted to do a movie post type and add it to that plug-in WP scaffold post type movie label movie plug it and tell it what plug-in I want to add it to and it's gonna go add the basic PHP code for a movie post type Now it's not gonna say a movie post type has title editor this option that option It's gonna give you that code so you can get started look at wordpress.org and then very quickly add the options You need but it's gonna put the code where it should be It's gonna, you know proper architecture Proper code headers proper code usage, you know, where do you register a new post type? How does that all work? It's gonna help you put all that together to make sure that that particular item is there for you and that That can extend a number another of other things. So once you create your plug-in Start looking at the rest of the scaffold command maybe there's parts of it or your theme and See is there things that I need to use in this plug-in or theme that I can scaffold as well So the scaffolding can actually take multiple steps depending on the needs of what you're building Of course, these are pretty simple. It's a hello world file in this case dot PHP That's really all the plug-in is if you want to get fancier for instance at University of Florida our plug-ins had quite an extensive Folder hierarchy when we're building plug-ins for 40,000 people. There are a number of functions There are a number of things we want to do right off the bat on every single plug-in This gets a little too opinionated You know, I said before the opinionated nature of a scaffolding is its strength But it can also be its weaknesses. It doesn't necessarily work for your use case As I mentioned before is grunt still a thing if you're a front-end developer You know and started in the last year or two. You might not have even heard of grunt. It was huge Way back when I was still doing JavaScript. It's been a while Actually did restarting you and I had to put that disclaimer in there because it's still technically being developed again But you maybe that's not what you're using Maybe you're using gulp or webpack or some other technology with all your themes that you'd rather do it that way This isn't it doesn't create a very complex file structure It doesn't it only uses underscores for the theme. Does everybody in is anybody in here used underscores? Okay, there's a few a few folks in here. How many folks in here use Genesis? I was hoping for more hands considering that's our product, but there's a few folks in here using Genesis. There's Thesis is still a thing. They're depending on what you're used that that might still not fit for you So but still the built-in command only uses underscores So now you there's technologies out there that you can write your own You can write your own pwpcli command wpcli commands don't need WordPress to run You can stick them on a server somewhere if you're using vagrant or docker or whatever your technology You're using for your local server. You can build that into your technology and have your own scaffolding command right there Or you can use something like yeoman This first one is actually a fork of the second generator wp We're used to work for ten up many years ago. They did their own scaffolding version with a much more complex structure It still didn't fit when I went to the University of Florida. So I rewrote it and help Converted over to what we needed so this adds things like docker configurations for our local servers It adds a whole number of things that were very specific to what we needed You can take a look at feel free to take a look the project my project's actually archived in GitLab So I'm not doing that type of work anymore, but you could use it as a base for maybe that's the type of work You're doing an enterprise You can roll your own go lang is a great language For rolling CLI apps if you've never used it if you're a php or javascript developer I want to try something completely different working with multiple return values Oh, drive you nuts for the first three weeks and go lane, but it's a lot of fun Of course php javascript yeoman is actually written mostly in javascript. There's various technologies you can use There's these scaffolding tools. There are in other words. There are scaffolds for scaffolding They're used quite a bit so whatever your need might be if WPC Li doesn't cut it for you out of the box Take a look at some of these deeper tools That gets your plug-and-going It still doesn't write your code for you So now we have to watch as we do start writing our code How do we automate how do we make sure that that code is the best quality it can be? WP coding standards set the standard for things like code syntax and There's php code sniffer that can enforce this For instance, it don't force your code syntax, but it can it also enforces best security best practices It'll tell you for instance everybody in here know what a nonces has worked with a nonce in a plug-in or a theme It's a number used once The idea being that if you're if you're trying to authenticate say a widget call or something with Ajax Or a JavaScript you don't want people to be able to just call it thing over and over from different pages from any place So we use a nonce to say this this call is coming from where it should be for all practical purposes Coding sandals I'll tell you when you missed it in a place that you would need it It'll tell you performance best practices if you stick if you read a query on a your own query with WP query and tell it negative one on post count negative one is considered a very bad thing because if you had two million records on My sequel database and a $3 host negative one is going to pull back two million Well, actually it's not going to pull two million records most likely. It's just going to crash your server WP coding standards will flag that for you and tell you hey, this is bad figure out how to do it a different way And it comes with a tool called PHP CBF Some editors like jet if you use PHP storm have their own version of this tool built in But if you install PHP coding standards on macro Linux, you're going to have PHP CBF which will automatically fix your syntax errors You can go to a lot of these conferences and somebody's going to say tabs or spaces or this bracket or that bracket Who cares your project has its own standard? PHP CBF hook it up with VS code hook it up with Adam hook it up with sublime text whatever you're using you hit save Code reformats to whatever it needs to be and you move on doesn't matter what that what if you're using tabs or spaces More importantly is the developers that you're working with or the people that you need to review your code It's the same standard that you're it's a WordPress plugin or a WordPress theme It follows X it follows WordPress standards. They know what they're looking for and what they're looking at So it's a it's a much it's a very quick way to automate the code. It's the development of the code itself If you're finding bugs oftentimes we use console.log or var dump how many people have used console.log or var dump in this in this room About half the room it looks like There that's time-consuming you're figuring out where to write it. Oops. I wrote that in the wrong function Okay, now where do I put it? So you wind up with test one or whatever statement you want to use and test two and you're outputting them in all These spaces trying to find out where you need to debug You don't need to do that anymore if you're using a modern text editor It can already automate this for you in this on the case of JavaScript VS code PHP storm web storm atom Sublime text all have tools all have extensions built in that when you click a line you can click a line at any point Your code in your JavaScript load that page in your editor or in your browser And it'll stop when it hits that line of execution and tells you everything that you see there For PHP there's X to bug does the same thing Every variable you it PHP knows about at that point and it tells you every point that linked to your function So if you're six files deep in a plug-in it'll say well it came from index dot PHP to WP settings to This file to that file and you can see each and every variable at every step of the way no more Manually typing in bar dump. What is this thing at this point? You just switch your code your breakpoints around and everything is solved for you. Well Everything's found for you. Hopefully I'll just not say everything solved for you You can also profile a page this way too. This is this is really neat if you're dealing with big sites You got a 15-second load time on a huge buddy press site. How do you debug that? Tools like new relic are out there, but they're very expensive X to bug has a profile tool that'll automate this way It takes a profile of every function how long it took to call where it's located what called it And it'll spit all that information back out for you So now you can now you just automated all that performance check testing you can go back in and see oh Well, this this function here has this negative one in this WP query that I didn't know about because somebody wrote it three Years ago if I fix this now look I'm down from 15 seconds to one second Hopefully, it's that easy for you. It's probably not but the idea is similar in whatever bug you're looking for X to bug is probably the single best tool I ever found Way too late in my career On the JavaScript side, I don't do enough JavaScript. I use the PHP storm tools quite a bit They work with Firefox or Chrome so basically if you're using a modern tool you probably have this stuff in there WP engine dev kit has X to bug built in I believe local by flywheel does I know maps newer stuff does desktop server by server press has X to bug stuff built in all these tools are built in there And they're very easy to use once you get started with them For everything else then to to automate the rest of the code you use what they call a task runner grunt gulp npm webpack Make there's all kinds of things that can run tasks for you from minimizing your JavaScript at the end Handling all your sass Shrinking your images creating translation files all that stuff can be automated quite simply and most of this is done out of the box When you do WP scaffold plugin everything in this particular page is done for you except for maybe shrink images I can't remember if that's in the basic one now or not It'll shrink your it'll shrink your JS. It'll take care of sass. It'll take care of your translations Everything's ready for you. Don't have to worry about these tasks. You don't have to set them up You don't have to worry about distributing when you distribute the wordpress.org. It's just there So what do you think you're doing done when you think you're done writing the code? The next big thing is maybe enforcing some of these standards. They're available to us. That's great But if we don't actually use if we want to use notepad on windows or text edit on Mac Maybe you are using something that doesn't have this built in there's ways we can automate or your developers aren't using this Let's face it. None of us are going to avoid our best tooling, right? But if as we give this to a junior developer, maybe they don't have the tooling to help them with this How do you enforce this stuff? Just like wordpress get offers hooks in Particularly there's a pre-commit hook which can be used to check all of this PHP code sniffer and wordpress codes coding standards. That's what we call a linter You're basically looking for low hanging for it. You're looking for the lint in the code and you're looking to try to remove it WP enforcer will enforce that linter before you can commit so in other words when you hit commit in your get repository It's WP enforcer by the by the name of Steve Grenwell who's another excellent wordpress developer It'll look and say okay Let's run PHP code sniffer on all your wordpress on all your plug-in or theme Hey, you screwed this up. You can't save it and it'll tell you what line you screwed up What rule you broke and where to go fix it? So that's if you're working in a team the idea here is to make sure that just because you're following Standards make sure your entire team is to you're enforcing those standards across the entire project So you're not going to wind up with one set of code for one style or one level of code really from one person and a different level from someone else You can also use this for build assets if you really want to if you want to run that grunt stop grunt thing is a As a pre-release hook you can do stuff like that. You can run anything in it you want Probably wouldn't recommend that you don't usually want to commit my minified code to sass or to your get repository That's when you end up with conflicts You know you you commit one side somebody else commits another one gets going to say hey when you try to merge this Which which version do you want you spend a lot of time trying to solve those? It's probably not something you want to do But the point is to emphasize that whatever you do need to do at this stage can be checked Maybe it's running unit tests. Maybe it's running acceptance testing or something else It's all available to you at this stage if you need to enforce it What more testing would you even want to run? WP scaffold gave us PHP unit, but does your code break everything else in WordPress as every WordPress developer set up such tools As code sniffer. There's a few other ones we can do The better part usually where we do this is what's in CICD. This is continuing continuous integration or Continuous develop like delivery deployment. I really can't talk today. My apologies If you if you're using git if you're using github if you're using git lab if you're using bit bucket All these have their own tools built in already handle this as well as there's things like circle CI or Jenkins which can do they're considered a little bit more powerful and they can be run independent of your githost and Typically they run three steps build test and deploy So they're running there though There's that's this is the step at which you're building your assets out if you wanted to take your plug and put it out To the world you want your CI CD your continuous deployment to say okay? Take all that code build our assets out Set up for any testing in other words prepare it so we can run all those tests if you're running JavaScript test and you haven't built your JavaScript you're not going to get too far in your testing so it's going to run all that for you and At the end of the build it should have a package that could be given to the end user So the idea here is whatever you have in your repository you build it so that it's it's ready to be sent out And then you run the then you run tests on it. Is it going to break something else? Run unit integration acceptance or any other testing something like WP acceptance, which ten up recently released Basically what it does is it's going to run simple things for you Can I still log into WordPress if this plug ins activated or this themes activated? Can I still do this task? Can I still create a new post? These are these are acceptance testing that's looking at the functionality of the application as a whole rather than just individual units What we use a WP engine for dev kit is something called jest if you're running JavaScript or if you're running anything on the CLI You're building a new WP CLI command This will run the command for you and create a snapshot and every time you run those tests It'll it'll run that command again into the snapshot differs your test fails So it's making sure that the output from the entire application is what you expect it to be You can compute PHP or other test coverage and at this stage again if there's any issues in your code It's going to fail. It's not going to go to your users. They're not going to find the problem You've probably all seen some level of this all these little ones here This is taken right off a github are just examples of the different things that you can display using this type of CI CD Some you know in this case it's download rates oftentimes you'll see test coverage Oh, you'll see build passing or build failing build failing or build passing is simply are the tests passing or failing It's the build stage passing or failing It's just all notifications as to how far along is the code in that repository good If you got to github and you want to download x project to try and it's build failing You know, you're probably going to have some problems if you download right from that master branch All that's built all that's handled automatically and updated automatically through the CI CD stuff Once you get that all done though now we have to deploy our code I've covered build and test deployings a little bit different if you're using CI CD This can do a lot of things for your version your project copy your files Trigger a remote get pull you okay Maybe it goes out to your server if you're running like uf it would go out to our server and just trigger the get pull It'll tell the server. Hey, we got new code here run it or run some sort of deployment script On the case of wordpress.org. Maybe it can run a script like this this errands This is now errands script This is actually the last time the last wordpress plugin I had on wordpress.org is this plug-in that Aaron eat and adopted a couple months ago this particular deployed at ssh script You don't need to know the SVN and all the stuff that wordpress.org Requires that you use to submit a plug-in or theme you run this script. It does it all for you It checks that your versions match if you're submitting a plug-in you have readme.txt version You have to have the plug-in header version if they differ it never shows up in wordpress.org This handles all that for you. It's just a single script that'll work really well on Mac or Linux Checks plug-in version handles wordpress.org can use for things but don't use it for first submissions That's the problem with any of this stuff any time you deploy your first deployment should probably never be automated Develop your process first every application deploys differently whether it's wordpress.org wordpress.org on your first deployment They're gonna review it for you Once you get the review done and they've told you all the things you've done wrong then switch to something like this But then this is for new versions. Hey, I had a bug I need to release six versions this week on a big plug-in that can be a three or four hour process If you've done manually and you're probably gonna miss a step somewhere along the way If you're using something like this with CI CD all your tests everything's done within just a couple of minutes And it's out there to your users and you know everything's complete. It's consistent and it's ready What about change log? Follow the progress follow your progress with conventional commits When you make a commit in this case fix, maybe I'm fixing a post type and that's what I fixed Maybe I'm making a new feature blocks There's this conventional commits CLI the best the the biggest example I see use is actually from AngularJS, which is a conventional commits org and It tells you how to make your when you commit on git It tells you how to make your commit that this little CLI script can read it and in the deploy process It'll look back at your git repost you don't have to read if you haven't released in six months What did you know you have 50 different things you put in there? What were they all you want to communicate that to your users? So it's going to look back at your git history and handle that for you This is from a couple days ago our last release of our last beta release of dev kit internally All these hours are git commits It just puts this this actual thing together here including if we do something that's going to break it for existing users It'll tell you you don't have to remember to say. Oh, yeah I forgot I we forgot to put in a change log that if they install this version It's going to break x or y unless they do something else it handles all that communications for you Which can be extremely handy the more popular your project gets and it's a simple npm script These are a lot of things you can do with this from deploying where are you deploying to from change logs from tests One of the things we use the most is one of the oldest technologies in the Linux open source world It's something called make It's designed to build files in C or another you know some of the older languages in other words You had X input file you wanted Y output file make was designed to handle that for you 25 years ago or longer We use it today as kind of a server-based task runner a lot at WP engine and I've used it at other places It's it can build assets Test unit you can script all these things to handle it the way you need to for instance This is our change log script It looks complex But the only difference here that we're doing then if you were to go to the basic and conventional change log tutorial Is we're running in Docker? Because we're not really sure sometimes whose computer are running in and I developed on Linux a lot of my co-workers develop on various versions of Mac Things can differ a little bit if you're not careful So we run it all through Docker to make sure everything's even more consistent and that's what this script here It's just a simple make script if we say make release change log It does this all for us and it's going to do it no matter what computer we're on no matter what server we're on everything's consistent Some pitfalls of this whole process No matter how much you automate it's still not solving your problems It's not writing your code for you if you need a plug-in to integrate stripe with WooCommerce I know there's 50 of them out there. It's the quickest example. I can come up with it Doesn't know what stripe is. It's not going to write your stripe code If you put a decimal place point in the wrong place and you're charging your users now $5,000 instead of 50 cents doesn't care. That's a valid number Automation is not going to solve that for you and the ROI of automation isn't something that you're going to realize tomorrow As you start this process, maybe the first thing you want to automate is bringing up a new plug-in Maybe the first thing you want to automate is your wordpress.org plug-in or theme deployment to wordpress.org It's going to take you a couple of hours the first time you do this to set this up, right? It's over the months and it's over releases that that the ROI of this really starts to pay off But it's still not one size fits all Every project you do spin up you probably still need to look at it and say okay. I can use scaffold for every one of my projects But this particular project deploys this way and this one deploys that way So we have to do this a little bit differently Every step of this may be a little bit different depending on what you're doing So you really do have to spend a little bit of time still at the beginning to make sure that's all correct And not everything needs automation Some of this stuff you you simply might not want to do if I have one plug-in then I'm going to deploy three times For a campaign that lasts two weeks. I am not going to spend time writing make files and automating all that process I'm going to do it Manually and be done with it in two weeks later and just forget about it until I probably need it again three years and wonder Three years later and wonder what I did with it, but it's not for every project It's not something I don't want people going home and saying well. He said I needed to automate everything I do with this You know start with one step Maybe it's depending on where you're at in your own process Maybe it's just adding unit tests to it run the scaffold command on your unit tests for theme or plug-in and see What you get start writing some tests for the for the low-hanging fruit that you have out there Every time we release Somebody breaks this this part of my theme or plug-in write a test for that So before you release next time you can test to see if it's been broken on that particular build That's a great way to start with this type of thing. It touches a lot of different areas That's what I have there's a lot like I said, there's a lot of different ways to do this I'll take some questions here and I will be available in the happiness bar afterwards ma'am The question is do I have any tips for JavaScript sites that are running low with heavy plug-ins such as revolution slider? Oftentimes I tend to stick more to the PHP layer So I can give you is starting to look at what functions are there and I'll use X to bug to actually see which JavaScript calls back or slow because typically even with JavaScript. It's not the JavaScript running locally on the client's Browser, it's those JavaScript calls back to retrieve all the images and say revolution pro or something else So maybe it's as simple as in revolution pro is saying well this page is running 200 images They're hiding this one section, so we don't see it But if you use something like X to bug and watch your your console to see what calls It's making back you can quite quickly see. Oh, this is where that call back is being is happening This is where it's slow and then start digging deeper from there typically with like an X to bug or Whatever your step debugger or profiler is does that make sense? The the plug-in examples will it will it work for any type of WordPress? Is that the question? Oh, yeah, if you don't want to do just a standard post type or something It's going to appear in a theme. Can you use it for other things? Yes, you can you can run a plug-in to You know, maybe you're working with graph QL and you're building something in addition to graph QL You could scaffold the plug-in and then use it from there in order to integrate back into graph QL or Elastic search here, whatever your technology might be Sir Do I've recommended resources for learning to use make or some of these other tools? The best thing I've done and where most of where I got started with this is ten-ups github and Some of the bigger WordPress agencies ten-up automatic that puts that puts things out modern tribe web dev studios WP engine What did they do on on a plug-in? I'll find a plug-in they built or a theme they built and see how they did it And that's really where I started especially ten-ups code They're putting out a lot of open-source code right now and had some of the most valuable I mean, I've even used some of their examples throughout they've had some of the most valuable ones. I've seen Sure the question is he uses they use WP engine. What does Deb kit offer? May 30th is our target launch date for a CLI client Which will basically replicate all the functions of like a local by flywheel or map or something like that sink a site down push a site up X debug is built in we have mid-em proxy which mid-em proxy is a tool that'll If you have a social media plug-in that posts and you write test posts and your client is Apple And you don't want it to go out to their Twitter account. It'll intercept all of that stuff Intercept emails going out. You know all the basic developer tools. It's a it's a complete local stack built on Docker That'll initially work on Linux and Mac GUI to follow before a 1.0 We're starting with a CLI and then we're going to build a GUI on top of it Any other questions, sir Yep, which you would typically replace as you replace instead of WP scaffold plug-in It would be WP scaffold my plug-in and then whatever you want to push into it And you do that simply by writing a new WP CLI command The nice thing about WP CLI is if you if you look at WordPress TV I actually have a talk I give completely on writing new WP CLI commands But it's it's a fairly simple plug-in that you can write and store in various places to be able to handle that for you Rather quickly any other questions Ma'am Can the scaffolding handle where in the WordPress admin the plug-in appears? Yes And no the default scaffolding nothing appears at all other than it'll appear and can I activate this plug-in? You can activate but there's no code there yet perhaps your own scaffold that the scaffold we built for UF Had quite a bit of settings set up and things like that So it depends on what scaffolding you're using but that the base scaffolding does not write any co-actual function Correct. I think we have time for one more Or not What's the link for the presentation? I? Realize I was pressing the button the wrong direction. Sorry about that WIEG.co slash WC ATL 19. Well, thank you everybody coming out I will be in the happiness bar this afternoon for any further questions