WordPress staging site
When you purchase through referral links on our site, we may earn a commission. This supports our testing and helps us maintain our editorial independence.

We all need to make changes to our WordPress site from time to time. Whether it’s to upgrade WordPress core files, add new plugins, implement custom code, or some other reason. Unfortunately, the inherent risk with making changes is that they have the potential to create a domino effect with unintended consequences. In a worst case scenario, a single tweak could unintentionally crash your entire site. Luckily, it’s easy to eliminate the risk of chaos by using a WordPress staging site.

👉 A staging site is basically an exact replica of your existing website with two key differences:

  • It’s not available to the public.
  • Changes you make on your staging site have no effect on your live, public-facing website.

In this tutorial, I’ll show you a few different ways (both free and paid) to set up your very own, so that you can always vet changes before you push them to your live site.

Build a staging site through your web host

Many web hosting companies include the option to create staging sites as part of their service. The specifics of how to do it vary from host to host.

For example, some companies, like Hostinger, have their own custom control panel that lets you launch a WordPress staging site in only a few clicks. 1

Other hosts, like Namecheap, give you cPanel with a software called Softaculous built into it, and that also lets you do it in a click or two:

Softaculous in cPanel showing the option to create a WordPress staging site
Launching a staging site using Softaculous

Simply put, the easiest and fastest way to create a WordPress staging site is by hosting your website with a company that offers it as a feature.

👉 In addition to the two I mentioned above, below are a few additional quality hosts which offer it as part of their plans:

Of course this is only useful if you haven’t signed up for hosting yet or you were thinking about transferring your site from your current host to somewhere else.

If your current hosting provider doesn’t offer staging but you’re satisfied with their service otherwise, then you’ll need to pursue other options – and there are plenty!

To get a basic staging site that lets you play around with new plugins and themes, you can use a plugin called WP Staging or a service called BlogVault.

If, on the other hand, you want to dig into more code-heavy experiments, you might want to manually create a WordPress staging site on a subdomain.

I’ll show you those methods next…

Create a WordPress staging site with the WP Staging plugin

If you want a simple, free way to create a WordPress staging site, you can use a plugin called WP Staging. It’s a good option for testing out basic tweaks, or checking if new plugins or themes are compatible with your current setup.

One thing to note about the WP Staging plugin is that the free version lets you create a staging site, but it doesn’t let you automatically apply the changes from your staging site to your live site. This is why I said that it works best for basic details like testing updates or new plugins.

If you want the ability to “push” your staging site live, you’ll need to purchase the premium version, which starts at €89 / $105 per year.

To use WP Staging, you just need to install and activate it. Then, head to the WP Staging tab and click Create Staging Site.

WP Staging plugin menu in the WordPress dashboard with the Create Staging Site option

Give your staging site a name (for example, “dev” or “staging”) and then click Start Cloning. For more advanced uses, you can also choose to only clone certain files or database tables:

Starting the site cloning process inside the WP Staging plugin.

The process might take a few minutes depending on how large your site is.

Once it’s finished, you can access your staging site by following the prompt. You’ll need to log in with your normal username. Then, you’re free to start testing!

You’ll always be able to tell when you’re on your staging site by looking at the orange admin bar, which will also have your site name prefaced with STAGING written in all caps:

Using the WordPress staging site

🤷 And don’t worry – WP Staging-created sites are typically protected from public access, but the exact access depends on the plugin’s authentication settings and your site configuration. Neither Google nor your website visitors should be able to view it if those protections are in place.

Create a WordPress staging site with BlogVault

BlogVault is a popular WordPress backup plugin/service that also makes a great option for creating a WordPress staging site. Unlike the previous plugin, BlogVault will host your staging site on its own hosting servers (rather than your WordPress site’s server), which some people might prefer.

BlogVault works by automatically backing up your site to BlogVault’s secure cloud storage. Once you have a copy of your site on BlogVault’s servers, you can easily spin up a new staging site, as well.

As a result, you’ll need to use BlogVault for backups if you want to also use it for staging sites. But that’s also a benefit, because you get both the backup and staging features for the same price.

BlogVault is a premium service that starts at $99 per year for one site. Entry-level plans include limited staging time, while higher-tier plans offer longer staging durations.

⚙️ Here’s how it works:

  1. Set up your site with BlogVault
  2. Wait for your first backup to complete
  3. Create your BlogVault staging site
  4. Access your staging site
  5. Push staging changes live

1. Set up your site with BlogVault

To begin, you’ll need to set up your site with the BlogVault backup service:

  1. Register for a BlogVault account.
  2. Add your site via the BlogVault dashboard.
  3. Manually install the BlogVault companion plugin on your WordPress site OR enter your admin username/password to have BlogVault do it for you.
 BlogVault dashboard screen to add a WordPress site for backup and staging

2. Wait for your first backup to complete

Once you set up the BlogVault plugin/service, it should start automatically backing up your site to the BlogVault servers. You’ll need to wait for the first backup to complete before you can create your staging site.

This might take some time for a large site:

BlogVault screen showing a site backup and sync in progress before staging

3. Create your BlogVault staging site

Once the sync completes, you should see an option to the right that lets you create a new staging site based on the backup that was created.

To create the staging site, just click the Create Staging button:

BlogVault dashboard with the Create Staging option available after the site sync completes

You can then choose which backup version of your site to use as the starting point for your staging site:

BlogVault staging setup showing selection of backup version and PHP version for the staging site

You’ll now need to wait for a bit while BlogVault creates your staging site. It usually only takes a couple of minutes or so, though it might take longer for really large sites.

Then, you’ll get a special username and password to access your staging site, along with options to access the WordPress admin and merge changes back to your live site:

BlogVault staging site details panel with temporary login credentials and admin access links

Note that your actual WordPress username and password for your live site will stay the same. The username and password shown on this screen are specifically for accessing the staging site only. Speaking of which…

4. Access your staging site

On the Staging Site Details page, the Access WordPress Admin button takes you straight to the backend dashboard.

Under normal circumstances, you’d be able to access the backend dashboard even through the frontend of your site by using the thin toolbar menu at the top of the screen.

This is the bar that turns orange when using the WP Staging plugin shown earlier.

But for whatever reason, BlogVault disables that bar if you go to the site via the frontend staging link. However, if you use the Access WordPress Admin button and access the frontend of the site through the dashboard, the bar stays.

In short, it’s best to use the Access WordPress Admin button if you plan to hop back and forth between backend and frontend. Otherwise, if you simply need to see what the staging site looks like, then using the frontend staging link will save you two clicks.

One other thing to note is that unlike WP Staging, BlogVault doesn’t make it as visibly clear that you’re using your staging site and not your live site. If you’re jumping around between 30 different tabs on your browser and you need to double check, the easiest way to do it is to look at the URL. As long as you see e.wpstage.net as part of the website address, then you’re in the clear:

Browser address bar showing a BlogVault staging URL to confirm the site is not live

5. Push staging changes live (optional)

If you’re just using your staging site as a testing sandbox, you might never need to apply the changes to your live site. However, you might have some situations in which you want to “push” the staging version of your site to the live site to overwrite the live site with the staging version.

Or, you can only push certain changes, which is a neat bit of flexibility that BlogVault offers.

To do this, open your Staging Site Details page and click the Merge to Source button. You may also see a Merge button on the staging card in the main site dashboard:

BlogVault staging site dashboard with options to manage and access the staging environment

On the next screen, BlogVault will generate a Sites Diff, which essentially just tells you the changes between your live site and staging site.

BlogVault Compare & Merge screen for pushing staging changes to the live WordPress site

From there, you’ll go through the Compare & Merge flow to choose whether you want to push all or just some changes to your live site.

How to create a staging site for WordPress manually

If you want a more open sandbox environment – one where you get to experiment with custom code modifications and etc., the next option is to manually create a staging site on a subdomain. It’s important to use a subdomain or another server-based staging environment rather than localhost when possible, so your hosting stack is closer to your live site.

Below, I’ll show you step by step how to set everything up. The process might be a little tricky if you’re a WordPress beginner, but I’ll try to break everything down as simply as possible.

This method is undoubtedly more complicated than the previous solutions. So if you want to keep things simple, I recommend going with one of the options above. This method also makes it harder to push your staging changes live, which is another important consideration.

⚠️ NOTE – before starting this process, make sure you have a recent backup of your site just in case.

Step 1: Create a subdomain through cPanel

First, you’ll need to create a subdomain to actually house your staging site. Go to cPanel and find the Domains option. Your cPanel might be styled differently, and other hosting dashboards may use different labels for the same tools:

cPanel home screen highlighting the Domains tool used to manage subdomains

Then, on the righthand side, click on Create a New Domain:

cPanel Domains page with the Create a New Domain button for adding a subdomain

The next screen can feel a bit confusing. There are two fields and also a checkbox that says Share document root. The box should be unchecked by default, but in case it’s not, go ahead and uncheck it:

cPanel form for creating a subdomain and specifying the document root for a staging site

As for the two fields:

  • Domain: Here you must enter a valid domain name with at least two parts. As you see, I made mine colinstest.website.
  • Document Root (File System Location): This field will auto-populate with whatever you typed in the Domain field above, but you can modify this to just “staging” if you prefer a simpler directory name.

Step 2: Create an FTP account for your new subdomain

Next, you need to create a new FTP account for your subdomain. This ensures everything is always kept separate.

Find the FTP Accounts option and click on it:

 cPanel FTP Accounts section used to manage FTP access for the staging site

Then enter the new account details. Make sure the Directory matches the directory (Document Root) for your subdomain:

cPanel form for creating a new FTP account restricted to the staging subdomain directory

Step 3: Upload WordPress files to staging site

Next, you’ll need to use that new FTP account to upload your site’s files.

First, download the latest version of WordPress and upload that:

Uploading WordPress core files to the staging directory before copying wp-content folders

Then, you need to also copy over these three folders from your existing WordPress site:

  • .../wp-content/uploads
  • .../wp-content/themes
  • .../wp-content/plugins

Upload those to your staging site as well. If your folders are especially large, you might be able to use cPanel’s File Manager to speed up the process. Otherwise, FTP is totally fine – a good free option is FileZilla. I personally use FTP – it just might take some time to run through large folders.

Step 4: Export / Import your database

Next, you’ll need to export your live site’s database and import it to your staging site.

To do that, I like a dedicated plugin called WP Migrate Lite. Install and activate it, then run it by going to Tools → WP Migrate. From there, tap on the MIGRATE option in the top row menu, followed by the Export button:

WP Migrate Lite export screen for generating a database export

The plugin will automatically update all of the file paths in your database to point to your new staging site URL. This is absolutely essential to ensuring your staging site actually works. Just make sure you enter the same directory path and URL that you used when you created your subdomain:

WP Migrate Lite find-and-replace configuration for updating URLs to the staging domain

Then export the database. 🗄️

Next, you need to create a new database for your staging site and import all of the data. Head back to cPanel and find the Manage My Databases option:

cPanel link to manage MySQL databases for creating a staging database

Click it and create a new database:

cPanel MySQL Databases screen creating a new database for the staging site

You’ll also need to create a new database user:

cPanel interface to create a new MySQL user for the staging database

And give that user access to your new database:

cPanel screen assigning a MySQL user to the staging database with required privileges

Then, go to PHPMyAdmin:

cPanel link to open phpMyAdmin for managing the staging database

Find the database you just created, click Import on the top row menu, and choose the file that WP Migrate Lite exported:

phpMyAdmin Import tab for uploading the staging site SQL export

Next, click the Import button at the bottom of the screen to import your database data.

Step 5: Edit wp-config to point to new database

Last step! You need to edit the wp-config.php file on your staging site to use your new database details and username.

Also, make sure the database prefix matches the one used on your live site. You probably won’t need to change anything here – but it’s possible depending on what prefix your live WordPress site uses. For example, my live test site uses “wpov” as the database prefix, so I had to make that change.

If you’re editing the wp-config-sample.php file, make sure to rename it to just wp-config.php. Then upload it back to your server over FTP.

Step 6: Log in and restrict access to your staging site

If all went well, you should now be able to log in to your staging site using the exact same username/password as your live site.

There’s really just one more thing you need to do:

Restrict access to your site.

Start by going to Settings → Reading and choosing the Discourage search engines from indexing this site box. That helps discourage indexing, but for a truly private staging site you should also use login protection or server-level access restrictions.

WordPress Reading Settings with Discourage search engines from indexing this site enabled for staging

If you want to restrict access even further, you can use a plugin called My Private Site. In order to access any part of your site, visitors will first need to log in as a registered user. You can still share your development site if needed by sharing the password, but strangers won’t be able to access your site.

How to push changes to your live site

If you’re using a staging environment set up through your host, you can usually push changes live by clicking a button.

It’s not quite that simple with a manual system. While there are ways to set up automated deployment from your staging site to your live site, I don’t think that’s a good idea.

You’re always risking something going wrong during the transition, and there really is a lot that could go wrong. For example, you might get just part of your changes deployed (= crashed site), or some untested changes might get deployed too quickly (= crashed site), and etc.

It’s safer to simply roll out changes manually once you’ve thoroughly tested them on your staging site.

Create your WordPress staging site today 🚀

Setting up a WordPress staging site is a great way to play around with changes before you push them live. If you want the absolute easiest way to run a staging site, pay for a host which offers built-in staging sites.

But if that’s not an option right now, setting up your own WordPress staging site isn’t that difficult. For the easiest options, you can use WP Staging or BlogVault. Or, you can also create a staging site manually, though I don’t recommend that for most people.

Beyond the options that we covered in this post, we also have another post that details the best WordPress staging plugins. This post includes BlogVault, WP Staging, and three other options.

Yay! 🎉 You made it to the end of the article!

6 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Elliot Dean
7 years ago

I’d like to know this too. It sounds like WP staging just let’s you test things separately from the main site which you then have to go and implement on the live site once you’re ready. If this is the case it’s quite limited in it’s use.

Jess
7 years ago

Hi Colin, Can you please outline the process to push changes from staging site to live site? I need to do this through cPanel.

Thanks!

Janelle Grkovic
7 years ago

Hi Colin – Do you know if you have an add-on on the live site that it needs to be added to the staging site? For example, I have CSV Manager on live for my store locator? However, it is not on my staging site. I can add it to staging, but it appears I might get charged for it. I was trying to use the license key from my live site, but there is no location within staging to add the key. Any help would be great!

Stephen Pierce
7 years ago

Thank you for the great write up! I had once question regarding Stage -> Prod. You mentioned that manually moving from Staging to Production is the way to go but little detail was given about this process. Is there another article or tutorial how to perform this? Alternatively, is it safe to assume you would repeat this process, but disregarding the database so as not to overwrite production data? Thank you!

Sofie Iversen
8 years ago

Hi, great post. I was wondering if you could tell me how important the step of creating a separate ftp account for the subdomain staging site would be? My host only provides one ftp account, and I really would like to make this manual staging site.

Tom George
7 years ago
Reply to  Sofie Iversen

Hi Sofie:

He has explained it in the article.

Use “File Mranager” from Control panel, which I think is better way since it is much faster.