 Jamie Schmidt. I am the Community Evangelist for SightLock. We are a cloud-based website security company. I'm also a freelance designer and developer. I live in Portland, Oregon, and I'm originally from Wisconsin, so my accent. Usually, I make fun of my accent when I'm in Wisconsin, but I'm in Canada, and I sound like Canadians already, so you probably don't even notice my accent. But I'm a proud cat mom in Portland, Oregon, and I'm a huge WordPress fan. I have been creating sites in WordPress since about 2011, and I have been holding my breath when I push that update button pretty much ever since, and I'm sure that that is the same for everybody that does WordPress updates. And I've also broken sites because of updates and because of changes, and in the beginning I was doing those changes on live, like a lot of people do, because they just don't know that there are other options. And so my talk today is going to be on staging sites. This is not a developer talk, just to be clear. I know the previous talk, there was a whole get workflow and a whole more developer-based workflow. This is going to be for the users. Obviously, it can certainly be still used by developers, but it's really so that you can have a separate site where you can do your updates without worrying about bringing down your live site. So we're going to cover a couple things today. We're going to cover why updates is important to be in your workflow. What is a staging site? The benefits of using them for updates and new features. Things to consider while evaluating your options. There is not one, just one way to create a staging site. And along with that, there is no one perfect way to create a staging site. So we're going to go through a few options and let you kind of figure out the one that works best for you. And then we're going to look at some methods for migrating your changes, because just because you made the changes on your staging site, that doesn't automatically put them on your live site. So first, we're just going to talk about the importance of keeping your site updated. I work for a website security company. And the number one reason that websites get hacked is because they have outdated core theme and plugins. WordPress core is constantly sending out patches and updates for security issues as they're found. The WordPress security team works hard to find all the issues that they can and push out these updates to it. They do have automated updates, but theme and plugins don't. So if you're relying on core to do your updates for you, that's great. But a lot of times those updates can break things on your theme and plugins. So it's not really an option to not update is what I'm saying. But they won't help you unless you apply them. So you have to actually push that button. And that is a thing that scares most people because if you've ever had something break after pushing updates, you know that it can end pretty badly. I just took this screen cap today. So you can see that this is just Yoast in the WordPress plugins repo. It was last updated four days ago. If you're not paying attention to your plugins when they're having updates, that could have been a huge issue that maybe was a security issue. I remember a few years ago, Gravity Forms had a really huge security issue. I updated all my client sites. I was like, yes, perfect, got it. And I front up at my own site. So like it completely went down like a few days later. I was like, oh, yes. But updates happen all the time. And you never know when there's going to be that one critical security updates. You can't really just ignore updates because you don't want a new feature. A lot of times there are security issues that are being updated also. So you have used WordPress and you've looked in your plugins section and the admin. You see that you can click the update now button, but you also see that it gives you a little link right there that says view version 7.9.1 details. And what that is is actually a changelog. Every time a plugin or a theme or even WordPress core pushes out a new version, they make a list of everything that they updated. This one isn't a super long list because they're sort of adding on to 7.9.0. But you can see that it's kind of listing a few things, removed internal linking, meta box, Gutenberg. There's probably a lot of Gutenberg kind of updates happening right now. But before that, it was fixing a bug. There could have easily been something in there that says fixes a critical security bug. Update now. And if you're ignoring the updates page entirely, you're not going to see that. To that point, making changes on your live site is dangerous. So yes, we do definitely want to be updating our site for sure. We don't necessarily want to update on live because things can break. The white screen of death. You can lose all the content you've been working on. If it crashes, sometimes your theme customizations can be deleted. If you have maybe forgot to make a child theme, plugin conflicts, maybe you installed a new plugin that was supposed to be an awesome social media plugin. But it turns out that it has a conflict with maybe your live box plugin or something. And now suddenly, none of that's working. Broken links and images and then error messages for your customers and users. And you don't want to see that. It looks unprofessional. So this is a demo of the white screen of death in case you've never actually seen this. Push play there. And actually, I looked and white screen of death.com doesn't exist. So if anybody wants to please feel free because I think it was kind of funny. But that's like the number one thing you don't want to see when you update your site. It causes immediate panic. So okay, so what is a staging site? How can it make my life easier? First of all, what is a staging site? It's a private copy of your site for testing updates, any kind of new features and changes doing you know, internal QA. And then so then what is a production site? So the production site is another word for your live site. So when I talk about production or staging, or talking about staging is the one that you're that I'm trying to convince you to do your changes on. And then production is the live site that everybody sees. search engines are looking at it search engines don't want to see that your site has gone down. They punish you for that. So you want this site to always be like crystal clear, perfectly working. No, you know, trying out new themes at two o'clock in the morning because you think no one's looking like that kind of stuff. We want to try to avoid that. So okay, how can it make your life easier? So when you're doing these changes on live, there's like a time pressure because you're like, Okay, I have to do this before like somebody notices it, like maybe, you know, I'm, I'm updating something somewhere and it something went down for a minute, or maybe you're putting into maintenance mode, which is better. But still someone is seeing maintenance on even if it says check back soon. If that's the first time visited your site, they're probably not going to come back. So nobody but you but you was seeing the staging site, you can take as much time as you want. fear gray hairs from the terror of pushing the update button. That terror is actually one of the things that causes lots and lots of people to neglect updating sites. So that's why we're press kind of has the wrap of being an insecure site and blah, blah, because a lot of people don't do those up and that's one of the reasons that they pushed out the automatic updates was so that it was just happening regardless. But you don't have to be afraid of breaking your life site when you do those updates. So you're more likely to do the updates on time. errors and downtime makes your business look bad. All those things. It hurts your conversions. It hurts your sales. Google will, you know, flag you maybe. And then you can test out any new themes or plugins, anything that you want. You can show it to people, you can get feedback. All those things, because you have a duplicate of your live site, and it doesn't matter what you do to it because nobody else is going to see it. Okay, so I mentioned that there's a lot of different solutions. There are a ton of different solutions. But it kind of comes down to a maintenance plan. So can I just like quickly show fans of who actually has a maintenance plan, either from your developer or you yourself for keeping your site maintained, updated in some way? Okay, so maybe like a third of the room. That's good. But two, there's the room didn't raise their hand, so that's not good. So just because you own a site, and like the developer handed it off to you, there are all rights here by doesn't mean that you don't have to maintain it. And just because you're a developer and you, you know, built a site for someone also doesn't mean that you can't maintain it. So I highly recommend figuring out a site maintenance plan, because this updates process is going to work into that plan. So think about how much time and resources you have for maintenance. Do you have a person that can do it? Or is it, you know, just going to be you when you find time? Think about what is your budget? Some of these solutions cost money. The solutions that are easiest cost the most amount of money. The solutions that take the most time and are more labor intensive can be free. So it's really kind of a balance of what you have available to you. How often are you going to be checking for these theme plug-in and core updates? Maybe you're going to check once a month, maybe once a week, once a day, who knows. But it has to be something regular. And when you have a site maintenance plan in place, now you can schedule a time to look at them and just check in and make sure that they are updated. And who is performing the updates? Make sure they know that it's their job to perform the updates. So that's just your general site maintenance plan. But when you're creating the staging site, it's sort of like a workflow inside of a workflow because there's so many different ways that you can create a staging site. So they're similar. What's your budget? You know, the time and resources that you have just for that updates workflow. But then you also have to think about how technical is your situation. So do you have developers working on your site? Things like that. If you have a developer and they're keeping your site in version control, you need to know that. They need to know that you're doing a staging site because it's possible that they already have a much more complex workflow created that you will need to follow. If your developer, whoever your original developer was, if it was you, figure what they did because they have maybe created a staging site that they were just using and not telling you about. So just kind of figure out the technical requirements. Do you have multiple people who need to verify changes before it can go live? This is a big one when you were working in maybe higher ed where you can't just push out whatever you feel like it has to go through three layers of people. Making the changes in one place and then showing these people and getting those OKs and yes, now we can make those changes live. How many sites do you have to manage? If you have a ton of sites, a workflow that's labor intensive and only covers one site is probably not going to be the best solution. You're going to want something that can, if you're using someone like ManageWP that pulls in all of your sites, you need a solution that's going to kind of work with that. And then how busy is your live site? This one I was actually talking with a couple of people yesterday and today. So how busy your site is, is actually going to help you decide how you're going to push your changes live because if you have a very popular e-commerce site that's selling like five products a minute, that's awesome, but you can't just overwrite your site, you know, an hour later because you're going to lose a lot of sales. You're going to lose people who have shopping cart sessions open. There's all that thing. So you can't just do a full overwrite. So you have to keep that in mind. Okay, so I'm going to go through. I kind of identified three types of staging site solutions. And last week I wrote a blog post on this. It goes much more in depth on what I'm talking about. So I'm kind of just going to go over it sort of quickly. And then you can, I can show you the blog post and there's like pros and cons and there's links and all kinds of things on there. But first of all just to think about what is actually required to make a staging site. So the first thing is you need to make a replica of your existing live site because having the closest replica of what you're really going to be working with on live, the closer the better. If you can completely exactly duplicate your live site and put it someplace else, that's awesome. If you have a huge, huge e-commerce site, that's, you know, maybe it's very big, that might not be practical for you. So as close of a replica as you can get, you need to put it someplace so it can run as a website. A web host, server, runs sites, but you can also do that locally if you put the right software onto your computer to run it locally. And then the third thing is you need to get those changes to your live site. That's not easy and there's lots of different ways to do it. Some of them are very complex and some of them are very developer specific, but it's funny because like if you ask any given developer what they're doing for staging, what they're doing for, you know, pushing their changes to live, you can get, you know, 100% different answers. Nobody is going to do the same thing unless they work together. But then if you ask them like, cool, how well does that work? Like basically all them are going to be like, eh, not well. And it's because there's a lot of complex moving parts that need to be accounted for. And part of your evaluation is going to be which do we absolutely require and which can we be sort of flexible on. So the solutions that I'm just going to kind of go through a few plugins, some WordPress specific development environments, and then some hosts that allow you to do this. So the first solution is something we call one click staging. This is something that your host offers as a solution. It's very WordPress specific. So sites that have managed WordPress hosting are the ones that are going to be offering these things. It's easiest and fastest. You're literally talking about clicking a button to duplicate your live site into staging, making your changes, clicking another button to push it to live. So like that's fast. It's fast and it's easy. It's not completely bulletproof, but it's the easiest one. But it's also the most expensive solution. And it requires that you're on one of those web hosts in order to make it work. So who are those hosts? There's more than this. But I do know for sure web hosting Canada. They offer it. JP Engine, SiteGround, Flywheel. So they all work sort of similar. Some make things a little bit easier. Some give you more flexibility if you want to do more developer type things. So I keep losing internet. So I can't really do a demo of it. But this is just an example of what WP Engine does. And so they have two ways you can manage your staging. One is from your hosting dashboard, logging into WP Engine.com. And then the other one is this, which they, when you're hosted on WP Engine, they pop that little menu item into your admin panel, your menu. And you can see it's pretty, it looks pretty easy like push the blue button to go from live to staging. Push the red button from staging to live. Like that's that's super simple. So it can be that simple. But it's it only gets more complex from there. So, so another fairly simple solution is to duplicate your website. And right on to your hosting and then just put it in maybe a sub domain or a sub folder of your site. And then so then you can make your changes. You can do that locally. You can make them on the staging site. Make sure everything works. And then you can just leave that staging site as it is and be like cool I push the update button. Now I'm just going to log into my website, my live site and then push that update button again. You can do that like that. So WP staging is a play in that once you activate it, it will duplicate your WordPress site and put the staging site inside of your WordPress site sort of like a WP inception kind of thing. But the benefit to that is that you are running that on your exact hosting environment. You're not going to have any like you know PHP update surprises. You're not going to suddenly realize that you're using nginx and your live site and you're doing something completely different. So having it on there is a really good solution and being able to demo it. I have this little, there's a little video and I'm thinking it's going to, right? So it's actually pretty nifty when you, can you see that? Is that okay? Pretty good. Okay. So you basically go through a few steps right there. Name it and then like what do you want to copy? And it's in there like cloning. Cool. It's just like doing it for me. And then in the little box it's showing you okay these are the things it's copying. It's changing the links. It's doing all this. And so now we have WP staging com slash staging site. So that's actually the whole, a whole another site inside of the site. So when you log into that, when you log into that site you're logging into the site that's logged in to your site. It sounds, it sounds really complex but it works. So it's fine. I've tried it and it works and I'm just not going to ask questions because I know that what they did you know to make that work fine was a whole lot of work because I've done it manually. So then the third thing is you can set up a local WordPress site. This one is, can be also very complex. You can you know duplicate your site, export an archive from your live site and then just import it to your local website. Make your changes. It looks fine. Maybe then you can go back to live and make the changes again or you can do a push to live and overwrite your site or overwrite parts of your site. So what do I mean when I say local? So local means you're running a whole website on your computer, on your laptop. It's not available to the public. Nobody can like type in the URL of your staging site or your local site and go to your computer. But your computer is now running the same software that a server, Godaddy or WP Engine is also running. So it's processing all of the files and all the database programs and everything in order for WordPress to run because you need to be able to access the admin. WordPress needs to be running also. And then when we say the word remote, that means your site that's running on a hosting account that is publicly accessible. So there are two that I know for sure. There might be more program software that are specifically made for running a local WordPress development website. Desktop server where they were the first to do it. And then local by Flywheel, who is Flywheel is a hosting company. They also offer a similar solution. Local by Flywheel is a little bit more developer oriented, but they kind of do the same thing. So I'm going to do a quick desktop server demo. I did not have good luck with this screen. So we're going to see. So I have, I don't have anywhere to put this. I have desktop server. I download it. I installed it on my computer. And that's where we're going to go from here. So I'm just going to pop it open. Okay. And the first thing you see is, okay, desktop server needs to run as administrator computer. It's going to ask you for my username and password. And that's a Mac specific thing. If you have it on a Windows machine, it's not going to ask you for that. But it's saying, okay, restart desktop server with the privileges. And I can't see what's down there. Okay. Live demo is right. Literally did this right before my talk to just to make sure it was fine. Okay. There it is. Okay. All right. So now you see a little menu here. And you see one of the options is create a new development website. So literally all I did was I went to desktop server, server press dot com downloaded this package and installed it. It took maybe like 10 minutes. And now I have the capability of running an entire basically local development environment on my computer. And because this is specifically built to work with WordPress, one of the options is create a new development website. You can export import or share websites, create some sub domains. So I'm just going to leave it at that just to show you like how quickly and easily it works. We're going to spin up a completely new development website. So it's going to ask me, okay, what do I want my site name to be? We will say WCM TL demo. And then I'm just going to hit go. It asked me where I want to save it to. I'm going to just hit go. Okay. So right now it's doing a bunch of stuff behind the scene. It's taking its look, its version of WordPress, creating all the files, creating the database, configuring it, restarting it so that everything's going to work. And then we got the quick three minute install here that you're probably used to if you've ever installed WordPress. So the cool thing is though, this, the URL here is dev.cc. So this is completely running local on my machine. And if, let me demonstrate the best password. Okay. So no way. No. How about this one? Change me. It works really well to get people to change their password. Just kidding. I know. Install WordPress. And I'm going to click login. So this login looks a little bit different because desktop server has some extra cool things that it allows you to do. One of them is to bypass the login. So if you ever work with WordPress websites, and you know, maybe you're the admin, but you also have like subscriber accounts, and maybe you have editor accounts and you want to test things between the two. You can quickly log in and out without having to go through the whole login process or remembering any of the passwords. Okay. So here. We have WordPress completely up and running, and it was that simple. So once we go from there, it's like, cool. You got your site up and running. Now what? So you can export, import or share sites. So if I wanted to pull in my life site, which I'm not going to be able to do because my connection isn't working, but you can go to export, import or share a site. And if I wanted to share a development website, say I have duplicated my life site, it's awesome. It's done everything I need it to do. And now I want to overwrite it on my life site. It pops in here. Oh, I don't think it's going to work because I can't connect. But it basically asked me, okay, what site do you, what site do you want to, to share? You can't quite see what this is next. Okay. So anyway, you can push it to the life site. And it works just like that. You're connecting to your life site through the desktop server plugin that you install on your life site. And it can overwrite those changes. Okay. So the bigger issue is moving your changes from staging to live. So I just showed you desktop server has this, this, the live syncing, but that's not, you know, the only way and syncing, by the way, means the changes that you've made in one place, putting those changes at the, at, you know, the new place. And that can be very complex. Just due to working with the database, the way WordPress saves things in the database. So you have to understand, like, first of all, what are you trying to update? What changes did you make on your site that would affect the, you know, two parts of WordPress, which is the database and then the files. So if you're changing your theme and plugin settings, that is only to be saved in the database. But if you edited a theme file, like your CSS of your child theme, that's going to be a site file. So that'll help you to know, like, okay, well, I only changed some theme or plugin settings. So I really probably only need to migrate the database. I don't have to move all four gigabytes of my images folder. So kind of getting an idea of what you've changed can help you to know what you want to try to sync. And so the first one I kind of talked about was Replicate. This one kind of sucks. It takes the most amount of time and it's basically do the changes here. Yes, they're good. Now go over to live and redo all those changes one by one again. It's not fun, it's not fast, but it's the most straightforward way and it doesn't require you to do anything fancy. So you can do partial overwrite. Plug in WP site sync, duplicator, someone click hosting, they let you decide which table you want to just push if it's only one single table. If it's a few posts, I'm going to show you the WP site sync here really quick. So this is a plugin. And I believe that desktop server bought it. So it's now included in what they, what they, on their website. But so it's showing you the live site and the staging site between the two. And he just grabbed three posts. And it's saying, okay, push that to my live site. Well, that happens so fast. But so it basically was like, okay, cool. It's they're updated here. We're talking to each other. We made the changes. It was only the three posts you wanted. So then you can also do the full overwrite, which you can use migrator plugins. What I did with the desktop server, the push, you know, the pushing to override. If you're not using desktop server, you can also just export it, migrate it from like a WP migrate DB, something like that, snapshot pro. Okay, so I'm kind of running out of time here. And I just want to say that there's a bunch of different options there. So creating a workflow that like works for your, your, you know, your company, the amount of time and money that you have to spend is like the number one thing. Feel free to try out all kinds of things that work. The things that I covered are by no means the only ways to do it. There's as many ways as maybe there are people in this room maybe not, but there's a lot of different ways. Okay, so offering the staging site to your clients gives you peace of mind that they're not going to be breaking things on live and then calling you at midnight on a Friday to fix it, right? Additional revenue. So now you can offer, you can say, well, you know, you now have a staging site, you pay extra for that. And it's more complete solution than maybe your competition is offering. So it's not just for users that have to keep their site updated. As a developer, it's smart if you're going to be saying sign our tier client after you build the site and not selling them a maintenance plan, at least setting them up with the staging site so they can do those changes themselves. And then finally use a schedule. A sign a Google Calendar. I use one. It pops up when one of my clients needs their sites updated. It reminds you that you need to at least go look, are there any changes? Are any of my plugins obsolete? There's plugins in the WordPress repo that haven't been updated in like two years. And if you don't actually look and see that, you might not know that your plugin is out of date. So, you know, taking a taking a look at all your plugins and making sure that they're still up to date is important. And thank you. So I have a link to the blog post that I wrote. It's got a lot more information on all of the topics that I covered, pros and cons, links to things. And then my slides are also up here. So I have a few minutes for questions. I'm curious, anybody in the room already using a staging site? Does anybody want to tell the class what you're using? Anyone? So Brian is one of them is he's using WP Engine. And Brian is actually one of the people I was talking to that brought up the issues with having your e-commerce sites, you know constantly updated that you can't completely overwrite them. And another thing actually that he mentioned was if you have plugins that are set to automatically send out email reminders to your users and you duplicate the staging site, disable those while you're working on them because they might send out a link to your staging site that obviously your client can't access. Anybody else have anything that they're using? Josh. So Josh uses Pantheon and they're actually here today. Pantheon have a crazy awesome workflow that is amazing for developers. And Dwayne is here, if you find him and ask him, he would love to tell you all about it. So yeah, and that's more of a developer sort of oriented solution. Does anybody use something like flywheel, desktop server, any kind of plugins to do it? Cool. Are there any other questions? I know there's probably there's tons. I even have questions. But does anyone have any sort of general questions that I could answer quickly in the couple minutes? Oh, in the back. I'm just curious. The only time I've ever had to create a staging site was for a WooCommerce site when it was first being developed. And I created a staging site, then I pushed it live. And those are the only sites that I ever feel like I would need a staging site for because there are a lot of transactions happening all the time. What do you recommend with WooCommerce or any sort of e-commerce site? Do like, I just never know what would happen. Like the orders, if this the live site, there's stuff happening. And then I push changes to the live site, do customers lose their orders? If you could just talk a little bit about how e-commerce sites work with staging, that would be awesome. Yes. So that's a situation where you absolutely don't want to be overwriting your live site. And in that situation, when you have a big, as big of a website as that, that it's super important that you're not losing all of these purchases and products that are coming in, I would recommend you have a more custom developer based solution to that. Aside from that, you can just do the pushing things up piece by piece, depending on what you're updating. But yes, the important thing there is not to be overwriting things that are happening live. Pantheon would probably be able to help you with that too. There's not a, there's not a simple answer to that one. Okay, cool. Thank you.