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.  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?  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?  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.   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


Long term planning for business or strategic planning is the hardest type of planning because the time frames over years and a huge amount can change. Within the business and also externally in the business environment with competitors and even the laws and regulations impacting the business. I'm going to take you through how to approach long term planning for business, what to consider, what to avoid and how best to approach each stage. Long term planning for business is not setting strategy nor the longer term goals for the business. Long term planning or strategic planning is about choosing the investments, the projects and the activities to bridge the gap between where the business is today and where it wants to get to, i.e. how are we going to make the chosen strategy a reality for the employees, customers and all the other stakeholders in the business. My name is Jess Coles and I've had a 25 year management career in Innocent Drinks, Fosters, EY, Peer Consulting and many other less well known companies. I've sat on multiple boards devising strategy and have also spent time in middle and senior management on long term planning working out the steps to turn strategy into reality. If you use this channel enhance.training provides online business courses to help you improve personal performance and that of your team and business. And if you like this video please give it a thumbs up and subscribe. So let's get straight into what to consider when undertaking long term planning. The first step to start your long term planning for business or your strategic planning is to be very clear about what your future state looks like. To start formulating what the future state of the business will look like you might start with the purpose or the vision for the business. The vision or purpose should give you a picture of what you want the business to be in say five to ten years time. Your strategy outlines the key goals that you want to achieve for the business to fulfill its purpose or vision. The strategy of the business typically sets out the direction of the business over the next say two to five years. The time frames depend on the growth rate of your business. The faster you are growing the shorter the time frames will probably need to be. The long term planning for business or strategic planning tackles the how we're going to achieve the strategic goals. When thinking about the future state of your business you should consider you know the trends in the marketplace and how you expect these trends to develop and impact your goals over the next two to five years. A PESTAL analysis is a good tool to use. The PESTAL tool will help you cover political, economic, social, technological and legal and environmental trends and market forces that you expect to impact your business. Another useful tool to use is Porter's Five Forces to understand the competitive forces at work in your industry. The five forces are competitive rivalry, supplier power, buyer power, threat of substitution and threat of new entry. Ask yourself what other external forces or marketplace dynamics are going to impact your business over the next couple of years. Your future state business model should also be reviewed as this may need to be significantly different from your business model today or parts of your business model may need to change to support achieving your strategic goals. Also consider how the financial funding of the business will need to be structured to best support investments and the business operations into the future. If you have a number of different business goals or options to choose I suggest going through the strategic planning process at a high level for each of the options that you're considering and try and model out the factors discussed in this video. Having a better understanding of the upsides as well as the different risks including ability to implement of each of the options will help you choose the most suitable goals before embarking on a more detailed planning process. Use the tools and tips to create a clear future state for your long planning to help the business reach its goals. The second step in long-term planning for business or strategic planning is to look at your business current state with a critical eye. Really understanding exactly where you are today will help you plan out your next few steps. Don't allow yourself to paint too rosier picture nor to a pessimistic picture of where the business is today. You're looking for realism and honesty. This will allow you to plan the next steps much more effectively and it will give your long-term plan a better chance of success. For instance what are your current business capabilities? Is your team able to execute well or does it really struggle to turn plans into reality? The SWOT tool is a well-known and useful tool to look at your business and help to find its key strengths and weaknesses. Think about how your business operates, what it does well and what it struggles with. Another really good tool to use is a business model analysis which maps out nine key areas. Customer segments, customer relationships, channels, value propositions, key activities, key resources, key partnerships and the cost structures and revenue streams of your business. You should also think very carefully about the team you have. List out their strengths and the areas in which they're not so strong. Considering your current team is one of the most important bits of analysis to do because people within the business are going to be making the decisions and doing the work to translate your long-term plans into reality. I suggest you also take a look at the key financial drivers of your business. What do you do that creates the profit and cash in the business? As you transition from the current state into the future state keep a close eye on how profit and cash generation change. Make sure you model out the various scenarios or options available within your long-term planning and their impact on the profit and cash of the business. Once you have as clear a picture as you can get of the future state that you want your business to get to and a realistic picture of the business today you can start thinking about planning out moving from your current state into your future state. Long-term planning for business or strategic planning is typically focused on the big steps needed to undertake the changes between the current state and the future state. I'm assuming that your annual planning or your tactical planning will add more detail and break down the big steps into short-term projects and activities that will support the business taking bigger steps captured in the long-term planning. So with that in mind the third step in long-term planning for business or strategic planning is to plan out how to bridge the gap between the current state and the future state. Start listing out all the changes that might need to be made and start listing down the options available now or ones that should be available to help you make the changes that you've identified. What are the key investments that the business will need to make over the next say one to five years? The investments might be recruiting new teams into business to add new capabilities or it could be increasing capacity at factories or it could be entering new territories or building new products in both physical and digital and so on. When you have a full plan for the investments you plan to make then how are you going to finance these? What change in financial structure is going to be needed if any? Changing the financial structure of a business can be used to offset changing business risk. For instance you might go from partially debt funded to fully equity funded or vice versa. Do you need to change the structure of your business to be better aligned to the future state? How will you go through this process? How will the products and services that you offer change or be extended and what steps are needed to make these changes? And how will you provide these products and services? Will this continue in the same way as you're doing today or will this change? And if you change what are the steps that are needed to make this change? Go through all the areas of the business model, the current states to the future states and identify what could and should change. As you take these steps keep asking yourself what are the external environment and the competition for instance likely to do in response to your changes? And how can we adjust our plans to maintain our advantages if we need to? Also keep asking yourself do we have the right skills and resources in the business to implement these steps? What would need to be changed or added to make implementation more likely to succeed? Carefully consider how easy or hard it will be to implement the changes. Always think about the sequencing and the dependency of the steps that you are considering. You know for instance if step D fails to be implemented does this halt the overall implementation or can you fall back on step D option two for example? Ask yourself what needs to happen for step D to fail and each of the other steps you're considering. You know what are the chances of this happening and can you mitigate these risks either partially or fully? A critical part of any long-term planning for business is to ensure that you capture all the assumptions that you're making when creating your plan. A planning process gives you a sense of control over a lot of shifting elements. In reality you are likely to have little or no control of many of the elements such as you know competitors regulation other external market forces. So go through each of your assumptions and scenario plan a variance to the original assumption. Does the plan still work? At what point does the plan fall down? Does undertaking a specific set of steps mean the plan is much less likely to fail than going another route? All these questions are much easier to ask and the scenarios are much easier to check while the plan is still on paper and the pressures are substantially lower compared to being in the middle of an implementation and it's starting to go wrong and you don't have plan B already worked out. I can't stress enough the benefits of getting as many people as sensible to be involved in the planning process and to challenge the assumptions and try and find the holes. If you have enough people in the team assign a couple of them specifically to find the holes in the plan. Also plan out how you're going to flex your plan to unexpected events and areas or trends that you have little or no control over. Again going through the scenarios before having to face the actual events gives you a good head start in working out the best response while under a lot less pressure. Work through the steps needed in as much detail as sensible. The more time that elapses between today and the step you're planning reduce the amount of detail you're going to. One certainty is that change will happen and you'll need to adjust your plan as time goes on. The fourth step in long term planning for business or strategic planning is to successfully implement the long term plan. The implementation of any long term planning or strategic planning remains the hardest step and where too many businesses fall down. Firstly the overall plan must be implementable. The business and your people must have the capabilities and capacity to take the steps outlined in the strategic plan or be able to build both before the step is needed. Your long term planning for business or strategic planning should remain at a higher level than say annual planning covering the broad steps needed. Your annual planning process should provide a more detailed plan of the steps to take on a month-to-month basis to ensure you hit your strategic plans main steps. The leadership and management teams need to keep on top of all the smaller steps to ensure that they're being delivered. Take care of the smaller steps and the bigger steps will largely take care of themselves assuming of course all the small steps are aligned correctly to the bigger steps. We go into how to implement planning steps in our videos on tactical and operational planning. See the info cards and look in the description below for the links. So in summary we have gone through four key steps in creating your long-term planning for business and suggested various tools that you can use to help identify the main steps that you should include in your plan to achieve your strategic goals. Do try to find holes in your plan and stress test each of your steps so you know when your plan is at risk of failure and you have a plan cd etc ready for each of these scenarios that you've thought about. That said there will always be unexpected events or trends that will emerge from the left field. Build in enough flexibility and reviews of your plan to give yourself the best chance of incorporating these into your plan in time to keep everything on track. Good luck with your strategic planning and do take a look at the courses and resources available to help you at enhance.training. Thanks very much for watching and I look forward to speaking to you again soon.