Testing a WordPress backup restore is the only reliable way to determine whether a backup can actually recover your website when something goes wrong.
A backup file existing somewhere is not the same thing as having a recoverable WordPress site.
A useful recovery process looks more like this:
Create backup
↓
Store backup safely
↓
Restore into an isolated environment
↓
Verify files
↓
Verify database
↓
Verify WordPress configuration
↓
Test critical workflows
↓
Document problems
↓
Confirm recovery procedure
Until that sequence has been tested, the backup is an assumption.
This guide explains how to test a WordPress backup restore safely, what should be restored, which checks matter after restoration, how to use staging without interfering with production and how to determine whether a backup is genuinely suitable for disaster recovery.
Why should you test a WordPress backup restore?
The purpose of a backup is not to create an archive.
The purpose is recovery.
Those are different objectives.
Backup creation
=
Can we save the data?
Backup restoration
=
Can we rebuild a working website from it?
A backup system can report successful completion while still producing a recovery point that is incomplete, inaccessible or unsuitable for the restoration process you actually need.
Possible problems include:
- missing database tables;
- missing uploads;
- corrupted archives;
- incorrect database credentials;
- incomplete filesystem copies;
- missing custom configuration;
- failed URL replacement;
- incorrect file permissions;
- environment-specific paths;
- unavailable encryption keys;
- missing external dependencies;
- insufficient restoration documentation.
A restoration test turns those possibilities into known facts before an emergency.
A backup should be judged by recoverability
Imagine that your backup dashboard says:
Backup completed successfully
2026-09-17 02:00
Size: 4.8 GB
That tells you several useful things.
It does not tell you:
- whether the SQL dump can be imported;
- whether every required file is present;
- whether the uploads directory is complete;
- whether WordPress can connect to the restored database;
- whether serialized data remains valid;
- whether administrators can log in;
- whether forms work;
- whether WooCommerce orders exist;
- whether the restored site can actually serve production traffic.
The difference is fundamental:
Successful backup job
≠
Successful disaster recovery
What should a complete WordPress backup contain?
Before testing restoration, identify what the backup is supposed to protect.
A complete WordPress recovery point normally needs the database and the site-specific files required to reconstruct the installation.
That can include:
- WordPress database;
- themes;
- plugins;
- must-use plugins;
- uploads;
- custom code;
wp-config.phpwhere appropriate;- server configuration where required;
- other application-specific files.
TheOneWP’s Backup Manager can create complete, database-only and files-only backups depending on the recovery requirement.
Database-only backups and complete backups solve different problems
A database-only backup may be perfectly appropriate for some recovery scenarios.
It can protect:
- posts;
- pages;
- users;
- settings;
- comments;
- metadata;
- WooCommerce records;
- plugin database data.
But it does not automatically contain:
- uploaded images;
- theme files;
- plugin files;
- custom PHP;
- server configuration.
Similarly, a files-only backup cannot recreate database content that no longer exists.
For the distinction between configuration portability and complete recovery, see Settings Export vs. Full Backup: What’s the Difference?.
Define what successful restoration means before testing
A restore test needs acceptance criteria.
Otherwise the test can quietly become:
Homepage loaded
↓
Backup works
That proves very little.
A better definition might be:
Restore is successful when:
database imports correctly
WordPress boots
administrator login works
content exists
media loads
plugins load
theme renders
forms submit
scheduled tasks exist
critical integrations are valid
no unexpected PHP errors occur
The exact criteria should reflect the website being protected.
Do not test a backup restore directly over production
A restoration test should normally happen in an isolated environment.
Do not overwrite the working production database merely to discover whether yesterday’s backup works.
Use:
- a staging environment;
- a temporary server;
- a local development environment;
- an isolated container or virtual machine;
- a dedicated disaster-recovery test environment.
The environment should be isolated enough that the restored copy cannot accidentally affect production.
Why staging is useful for backup testing
A staging environment allows the backup to be restored without replacing the live site.
However, useful staging should resemble production closely enough that the test actually proves something.
If production uses:
PHP 8.4
MariaDB
Nginx
Redis
while the restore test uses:
PHP 7.4
MySQL
Apache
no object cache
the result may not accurately represent the real recovery process.
For broader environment design, see WordPress Staging Site Best Practices.
Keep the restore environment operationally separate
Technical similarity does not mean the environments should behave identically.
The restored test site should not accidentally:
- send production email;
- charge customers;
- process live payments;
- call production webhooks;
- send marketing automations;
- update external CRMs;
- submit production analytics;
- run destructive scheduled jobs;
- appear in search engines.
A restore test should verify recovery, not create a second production site that starts enthusiastically interacting with the outside world.
Choose a representative backup
Do not always test only the newest backup.
A mature backup strategy may contain:
- hourly backups;
- daily backups;
- weekly backups;
- monthly backups;
- manual pre-change backups.
Over time, test representative recovery points from the retention strategy.
This helps detect problems affecting particular backup generations rather than assuming that one successful restore proves every archive is valid.
Record the backup metadata before restoration
Before starting, record information such as:
Backup date:
2026-09-17 02:00
Backup type:
Complete
Database:
Included
Files:
Included
Original domain:
https://example.com
Original environment:
Production
WordPress version:
Current production version
PHP version:
8.4
This creates a reference against which the restored environment can be compared.
Verify that the backup archive is accessible
First, make sure you can actually retrieve the backup.
This matters particularly when backups are stored remotely.
Verify:
- the storage account is accessible;
- required credentials are available;
- the archive can be downloaded;
- the archive size is plausible;
- the file is not unexpectedly empty;
- required encryption credentials are available.
A recovery procedure that depends on credentials nobody can locate is not a complete recovery procedure.
Verify backup integrity before restoration
Where the backup system provides checksums, integrity verification or archive validation, use it before restoration.
At minimum, confirm that compressed archives can be opened and their contents inspected.
For example, a ZIP archive should not fail immediately with corruption errors when extracted.
Similarly, an SQL export should contain actual database statements rather than being a zero-byte file or an error page saved with an .sql extension.
Inspect the backup contents
Before running the restoration process, inspect what the archive contains.
For a complete WordPress backup, you may expect structures corresponding to:
wp-content/
plugins/
themes/
uploads/
mu-plugins/
database.sql
configuration files
The exact structure depends on the backup system.
The important question is whether the data required by your recovery model is actually present.
Check whether the database backup exists
If the restore requires the database, verify that a database export is included.
The database contains most of the site’s dynamic state, including:
- content;
- users;
- site options;
- plugin settings;
- post metadata;
- taxonomy relationships;
- comments;
- many ecommerce records.
The official WordPress database backup documentation explains the role of database backups in protecting WordPress data.
Check whether uploads are included
The database can contain attachment records without containing the actual files those records describe.
For example:
Database:
attachment ID 825
→ /uploads/2026/08/product.jpg
Filesystem:
product.jpg
→ missing
WordPress still knows that the attachment exists, but visitors cannot load the file.
Verify that the backup contains the required wp-content/uploads data.
Check themes and plugins
If the recovery strategy assumes that theme and plugin code will be restored from the backup, confirm those files are present.
Pay particular attention to:
- custom plugins;
- premium plugins;
- plugins no longer available from their original source;
- custom themes;
- child themes;
- must-use plugins.
A standard repository plugin can often be downloaded again. A custom plugin written for the site may not be replaceable unless it exists in source control or the backup.
Check custom configuration
Recovery may also depend on configuration outside the normal database and wp-content directories.
Examples include:
wp-config.php;- environment variables;
- Nginx configuration;
- Apache configuration;
- server cron jobs;
- PHP configuration;
- Redis configuration;
- CDN configuration;
- external storage credentials.
A WordPress backup can restore the application data while still requiring infrastructure configuration to make the application usable.
Create the isolated restore destination
Prepare a clean environment for the test.
Document:
Test hostname
Database name
Database user
PHP version
Web server
Filesystem path
WordPress environment type
Do not reuse production credentials unless the recovery architecture specifically requires them and the test environment is appropriately isolated.
Use a different hostname for ordinary restore testing
A test restoration may use something like:
restore-test.example.net
instead of:
example.com
This prevents ordinary public traffic from reaching the test environment.
It does, however, mean that WordPress URLs may need to be adapted for testing.
Be careful when changing URLs in the restored database
WordPress stores URLs in multiple database locations, and some plugin data may be serialized.
Do not run naive SQL replacement such as:
UPDATE wp_options
SET option_value =
REPLACE(option_value, 'example.com', 'restore.example.com');
across arbitrary tables without understanding the stored data.
PHP serialized values contain structural information that can become invalid when strings are changed incorrectly.
See Why Serialized Data Breaks Naive WordPress Migrations for the underlying problem.
Use WordPress-aware search and replace when necessary
WP-CLI provides:
wp search-replace
The official WP-CLI search-replace documentation explains that the command handles PHP serialized data.
For a test restoration, you might first perform a dry run:
wp search-replace \
'https://example.com' \
'https://restore-test.example.net' \
--all-tables-with-prefix \
--dry-run
Review the affected data before executing the actual replacement.
For the complete process, see How to Migrate WordPress URLs Safely.
Restore the database
If the backup system provides an integrated restore process, follow that workflow.
For manual or WP-CLI-based restoration, a database may be imported with:
wp db import backup.sql
The official WP-CLI db import documentation describes the command used to import a database from a file or standard input.
Do not judge database restoration only by the import exit status
A successful SQL import means the database server accepted the input.
It does not necessarily prove that the restored data is complete.
After import, inspect:
- table count;
- expected WordPress tables;
- custom tables;
- important content;
- users;
- site options;
- plugin-specific data.
TheOneWP’s Database Manager can help inspect database tables, structures and stored records after restoration.
Check the WordPress table prefix
Make sure the restored configuration references the correct table prefix.
For example:
$table_prefix = 'wp_';
If the restored database contains:
client_posts
client_options
client_users
while WordPress expects wp_, the application will not use the intended tables.
Restore the filesystem
Restore the required files according to the backup type.
For a complete restoration, this may include:
- plugins;
- themes;
- uploads;
- must-use plugins;
- custom code;
- configuration files.
Preserve the directory structure expected by WordPress.
Verify file ownership and permissions
Files copied from another server or extracted by a privileged process may end up with incorrect ownership or permissions.
After restoration, verify that the web server can:
- read WordPress files;
- serve uploads;
- write to required directories;
- create temporary files;
- perform expected update operations.
Do not solve restoration permission problems by making the entire installation globally writable.
Configure wp-config.php for the test environment
Verify at least:
DB_NAME
DB_USER
DB_PASSWORD
DB_HOST
Also inspect environment-specific values such as:
WP_HOME
WP_SITEURL
WP_ENVIRONMENT_TYPE
WP_DEBUG
The official WordPress wp-config.php documentation covers the configuration file and common constants.
Use WP_ENVIRONMENT_TYPE where appropriate
WordPress supports identifying the current environment through WP_ENVIRONMENT_TYPE.
For a restore test environment, a configuration might use:
define( 'WP_ENVIRONMENT_TYPE', 'staging' );
The exact value should reflect the environment strategy used by the project.
Environment awareness also helps custom code avoid treating a restore test as production.
Prevent the restored site from sending normal production email
This is one of the most important restore-test safeguards.
A restored database may contain:
- customer email addresses;
- administrator addresses;
- scheduled email queues;
- marketing automations;
- order notifications;
- membership reminders.
If the restored site immediately resumes production email activity, users may receive duplicate or obsolete messages.
Disable, redirect or safely capture outgoing mail during testing.
Prevent payment processing
If the restored site contains ecommerce functionality, ensure that payment gateways cannot perform unintended live transactions.
Use:
- sandbox credentials;
- test mode;
- disabled gateways;
- network restrictions;
- other provider-supported test controls.
Do not assume that because the hostname says “staging,” payment providers will politely infer your intentions.
Disable or isolate external webhooks
The restored site may contain integrations that send data to:
- CRM platforms;
- ERP systems;
- marketing services;
- payment providers;
- warehouse systems;
- automation platforms;
- external APIs.
Identify those integrations before allowing scheduled tasks or user actions to run.
Keep the restore test out of search engines
A restored copy of production can contain the same public content as the real site.
It should not become a competing indexable copy.
Use appropriate authentication or access controls for the environment.
Do not rely on robots.txt as security. Robots.txt vs. Real Access Control explains the difference between crawler instructions and actual access restrictions.
Start with a basic HTTP check
Once restoration is complete, request the homepage.
You want to confirm that:
- DNS or local hostname resolution works;
- the web server responds;
- PHP executes;
- WordPress connects to the database;
- the active theme loads.
This is a useful first check.
It is not the end of the restore test.
Check HTTP status codes
A visually rendered page can still return an incorrect HTTP status.
Verify representative responses such as:
Homepage → 200
Normal page → 200
Missing URL → 404
Redirected URL → expected 3xx
For the wider meaning of these responses, see HTTP Status Codes for WordPress Sites, Explained.
Test WordPress administrator login
Attempt to log in using an appropriate test administrator account.
Verify:
- login form loads;
- credentials are accepted;
- cookies work;
- dashboard loads;
- administrator capabilities remain correct;
- logout works.
If the site uses two-factor authentication, verify the recovery implications of that system as well.
TheOneWP’s Two-Factor Authentication can add a second authentication factor, but the broader recovery plan should account for access to whatever authentication mechanism production requires.
Test multiple user roles
Administrator access alone does not prove that the restored permissions model is intact.
Where relevant, test:
- Administrator;
- Editor;
- Author;
- Subscriber;
- custom roles;
- WooCommerce customer roles;
- membership roles.
For a structured permissions review, see How to Audit User Roles on a WordPress Site.
Verify posts and pages
Check representative content from different periods.
Do not inspect only the newest page.
Test:
- recent posts;
- old posts;
- recent pages;
- older pages;
- drafts;
- scheduled content;
- private content where applicable.
This helps confirm that the restored database contains the expected history rather than only a partial snapshot.
Verify custom post types
Many WordPress sites depend heavily on custom post types.
Examples include:
- products;
- properties;
- portfolio items;
- events;
- team members;
- documentation;
- custom business records.
For background on how WordPress stores these structures, see WordPress Post Types vs. Custom Post Types.
Verify taxonomies
Check categories, tags and custom taxonomies used by the restored site.
Confirm that:
- terms exist;
- content relationships remain intact;
- archives work;
- custom taxonomy templates render.
For the underlying model, see WordPress Taxonomies Beyond Posts and Pages.
Verify the Media Library
Open the WordPress Media Library and inspect files from multiple periods.
Confirm that:
- attachments exist;
- thumbnails load;
- original files load;
- metadata exists;
- PDFs and other documents are accessible;
- older upload directories were restored.
Do not confuse Media Library records with restored files
WordPress can display an attachment record even when the corresponding physical file is missing.
Test the actual file URL.
For example:
Attachment exists in database
+
File returns 404
=
Incomplete recovery
For larger libraries, Auditing a WordPress Media Library for Accessibility provides a broader framework for reviewing media assets.
Upload a new media file
A restore test should verify not only historical data but also normal operation after recovery.
Upload a test image and confirm that WordPress can:
- write the original file;
- generate image sizes;
- create attachment metadata;
- serve the resulting URLs.
This can reveal filesystem-permission or image-processing problems that existing media does not expose.
Test the active theme
Inspect more than the homepage.
Check representative templates such as:
- front page;
- single post;
- page;
- archive;
- search results;
- 404 page;
- custom post type;
- taxonomy archive.
Look for missing assets, broken template dependencies and PHP errors.
Verify plugins
Confirm that the expected plugins are installed and active.
Then test the functionality that actually matters.
A plugin appearing under:
Plugins
→ Installed Plugins
does not prove its database tables, scheduled tasks, credentials or integrations survived correctly.
For a broader review methodology, see Auditing WordPress Plugins on a Client Site.
Check must-use plugins
Must-use plugins can easily be overlooked because they do not behave like ordinary plugins in the WordPress interface.
Verify the restored:
wp-content/mu-plugins/
directory if the site depends on it.
Test forms from beginning to end
A form test should cover the complete workflow.
Open form
↓
Enter data
↓
Submit
↓
Validation succeeds
↓
Database entry is created if expected
↓
Confirmation appears
↓
Notification is safely captured
Remember that production email should remain disabled or redirected during an isolated restore test.
Test ecommerce data
For WooCommerce or other ecommerce systems, inspect representative:
- products;
- variations;
- customers;
- orders;
- order metadata;
- coupons;
- tax configuration;
- shipping configuration.
Compare known records from the backup timestamp with the restored environment.
Test checkout safely
If checkout is part of the recovery acceptance criteria, use a test or sandbox payment workflow.
Verify:
Product
↓
Cart
↓
Checkout
↓
Test payment
↓
Order creation
↓
Inventory update
↓
Safe notification capture
The objective is to prove the restored application can execute its business workflow without generating real transactions.
Verify users
Compare user records against expectations.
Check:
- administrators;
- staff accounts;
- customers;
- membership accounts;
- custom roles;
- important user metadata.
For a deeper explanation of stored user metadata, see WordPress User Meta Explained.
Verify menus
Check:
- header navigation;
- footer navigation;
- mobile menus;
- custom menu locations;
- links to internal content;
- links generated by custom code.
A missing theme location or broken stored URL can make navigation fail even while content remains intact.
Verify widgets and theme settings
Depending on the site’s architecture, inspect:
- widget areas;
- Customizer settings;
- theme options;
- page-builder configuration;
- global design settings;
- header and footer configuration.
These values often live in the database and may contain serialized structures or environment-specific URLs.
Verify custom fields
Sites using custom fields should test representative records.
Check that:
- field definitions exist;
- field values exist;
- relationships remain valid;
- frontend templates display the values;
- media references resolve correctly.
Check database table completeness
Compare the restored database with the expected source structure.
At minimum, verify:
- WordPress Core tables;
- plugin tables;
- custom application tables;
- ecommerce tables where applicable;
- queue or scheduled-action tables;
- security-related tables where required.
Database Manager can help inspect the restored database directly from WordPress.
Compare important row counts
For critical datasets, compare approximate or exact counts between the source backup and restored database.
Examples include:
Posts
Users
Orders
Products
Comments
Custom records
The objective is not necessarily to compare every table manually.
It is to establish enough evidence that important data was restored completely.
Check the options table
The WordPress options table contains configuration used throughout the application.
Review important values such as:
- site URL;
- home URL;
- active theme;
- active plugins;
- permalink structure;
- plugin-specific settings.
For broader database context, see The WordPress Database Structure, Explained.
Check for staging and production URL confusion
After adapting the restored site, search the database for unexpected references to:
production.example.com
staging.example.com
old.example.com
localhost
127.0.0.1
Some occurrences may be legitimate historical values.
Others may reveal incomplete environment conversion.
Verify permalinks
Test:
- posts;
- pages;
- archives;
- categories;
- tags;
- custom post types;
- custom taxonomies;
- pagination.
If the restored environment uses different web-server configuration, rewrite behavior can differ from production.
Test redirects
If the site maintains redirect rules, verify representative examples.
TheOneWP’s Redirect Manager can manage WordPress redirect rules, including mappings that may be important after migration or recovery.
Check that restored redirects:
- still exist;
- point to the expected destination;
- use the intended status;
- do not create loops;
- do not reference obsolete test domains.
Verify canonical URLs
If the restore test uses a different hostname, canonical URLs require deliberate interpretation.
What matters is understanding what would happen during an actual production recovery.
For the underlying SEO mechanism, see WordPress Canonical URLs, Explained.
Verify the XML sitemap
If the site generates an XML sitemap, inspect it after restoration.
Confirm that:
- it loads;
- expected content types appear;
- URLs are structurally correct;
- obsolete domains do not appear unexpectedly.
TheOneWP’s XML Sitemap can provide sitemap generation for indexable WordPress content.
Check scheduled tasks
Restoring the database can also restore scheduled WordPress events.
Those jobs may include:
- scheduled publishing;
- cleanup;
- email queues;
- external synchronization;
- ecommerce jobs;
- backup schedules;
- plugin maintenance.
Do not simply allow all restored scheduled jobs to execute against production services.
Check server cron configuration separately
A database backup does not necessarily contain server-level cron configuration.
If production disables normal WP-Cron and uses a system scheduler, document that infrastructure separately.
Recovery testing should answer:
Can WordPress scheduled tasks run
after the infrastructure itself
has been rebuilt?
Check caches after restoration
Restored cache files or persistent object-cache data can contain stale state.
Depending on the architecture, clear or rebuild:
- page cache;
- object cache;
- CDN cache;
- page-builder cache;
- generated CSS;
- application-specific caches.
Do not assume cached production values belong in the isolated recovery environment.
Check Redis or other persistent object caches
If production depends on Redis, Memcached or another persistent cache, determine whether the backup recovery process includes or excludes that state.
In many architectures, cached state should be regenerated rather than treated as primary recovery data.
The restore test should confirm that WordPress functions correctly after the cache is initialized in the intended recovery configuration.
Check external storage
Some WordPress sites do not keep all media on the local filesystem.
They may depend on:
- S3-compatible storage;
- CDN storage;
- remote media services;
- network filesystems.
A backup of the WordPress server may therefore be insufficient by itself.
Verify whether the external data:
- still exists;
- has its own backup strategy;
- can be accessed after disaster recovery;
- requires credentials not contained in the WordPress backup.
Check external API dependencies
A restored WordPress site can boot successfully while important functionality remains unavailable because an external dependency is missing.
Examples include:
- CRM APIs;
- ERP systems;
- payment gateways;
- search services;
- email providers;
- authentication providers;
- maps;
- external databases.
Document which systems are part of the recovery scope and which must be restored independently.
Check SSL requirements
If the restore test uses a different hostname, configure HTTPS appropriately.
Verify:
- certificate validity;
- hostname coverage;
- HTTP-to-HTTPS behavior;
- proxy configuration;
- mixed content.
This is particularly important if WordPress or plugins enforce secure cookies or HTTPS redirects.
Test password reset
Authentication recovery should include more than an existing administrator session.
Test the password-reset workflow using safely controlled email delivery.
This confirms that:
- users can be identified;
- reset tokens can be created;
- the reset URL is correct;
- the restored hostname behaves correctly;
- authentication can be recovered without direct database editing.
Test REST API endpoints
If the site depends on the WordPress REST API, test representative endpoints.
The official WordPress REST API documentation describes the API architecture and standard endpoints.
Test both:
- public endpoints;
- authenticated endpoints where relevant.
Pay particular attention to custom endpoints used by applications or external integrations.
Test AJAX-dependent functionality
WordPress plugins and themes may depend on AJAX for:
- search;
- filters;
- forms;
- administrative actions;
- cart operations;
- dynamic interfaces.
A page rendering correctly does not prove those asynchronous requests work.
Check PHP errors
Inspect PHP and web-server logs during restoration testing.
Look for:
- fatal errors;
- uncaught exceptions;
- missing files;
- permission errors;
- database errors;
- deprecated behavior;
- failed external connections.
Do not rely solely on errors visible in the browser.
Test plugin updates in the restored environment
If disaster recovery could require operating from the restored environment for an extended period, verify that normal WordPress maintenance remains possible.
Test whether:
- plugin update information loads;
- filesystem writes work;
- temporary directories work;
- remote downloads work.
You do not necessarily need to update production software during every restore test. The objective is to verify that the recovered environment is operational rather than frozen in place.
Test new content creation
Create a temporary draft post or page.
Verify that WordPress can:
- write to the database;
- save metadata;
- create revisions;
- retrieve the new content;
- delete the test content.
This confirms that the database connection is not merely read-only.
Test media creation
Upload an image and verify:
Upload
↓
Filesystem write
↓
Attachment creation
↓
Metadata generation
↓
Image sizes
↓
Public retrieval
This exercises both database and filesystem operations.
Test deletion carefully
In an isolated restore environment, deleting temporary test data can confirm that normal write operations function correctly.
Do not use production data as disposable test material.
Verify backup timestamp accuracy
Determine exactly how recent the restored data is.
If the backup claims to represent:
2026-09-17 02:00
look for known content or transactions created near that time.
This helps confirm whether the actual recovery point matches the timestamp presented by the backup system.
Measure recovery point objective
A useful disaster-recovery concept is the recovery point objective, or RPO.
It describes how much data loss the organization is prepared to tolerate.
For example:
Backups every 24 hours
→ potentially many hours of data exposure
Backups every hour
→ smaller recovery window
The exact loss depends on when the failure occurs and whether additional replication or transaction protection exists.
Measure recovery time objective
Recovery time objective, or RTO, describes how quickly service needs to be restored.
A restore test is one of the best ways to measure whether the recovery process can meet that expectation.
Record:
Start restore: 10:00
Database complete: 10:12
Files complete: 10:31
Configuration complete: 10:39
Critical tests complete: 10:52
Usable recovery time:
52 minutes
Without testing, an assumed ten-minute restoration can turn into several hours of discovering undocumented dependencies.
Time each stage of the restore
Record how long it takes to:
- retrieve the backup;
- prepare infrastructure;
- import the database;
- restore files;
- update configuration;
- perform URL replacement;
- clear caches;
- validate critical workflows.
This identifies the slowest parts of recovery.
Test restoration without the person who created the backup system
A valuable operational test is asking whether another qualified administrator can follow the documented recovery procedure.
If restoration depends entirely on one person’s memory, the process has an additional single point of failure.
Documentation should explain:
- where backups are stored;
- how they are accessed;
- which credentials are required;
- how the database is restored;
- how files are restored;
- which configuration must change;
- how the site is validated;
- how production traffic would be switched.
Document every manual recovery dependency
During the restore test, record anything that was not obvious.
For example:
After restoring database:
1. update Redis namespace
2. disable production SMTP
3. regenerate page-builder CSS
4. flush object cache
5. update webhook endpoint
6. resave permalink configuration
The restore test should improve the recovery documentation every time it is performed.
Record failures rather than working around them silently
If something fails during restoration, document it.
For each issue record:
- what failed;
- why it failed;
- how it was detected;
- how it was fixed;
- whether the backup process needs modification;
- whether recovery documentation needs modification.
A restore test that requires undocumented emergency improvisation is useful precisely because it has exposed a weakness before production depends on the process.
Test a database-only restoration separately
If the backup strategy includes database-only backups, test them independently.
Confirm that the database can be restored into an environment with compatible site files.
Verify:
- content;
- users;
- options;
- plugin tables;
- custom data;
- application functionality.
This tells you what a database-only recovery point can and cannot solve.
Test a files-only restoration separately
If files-only backups are part of the strategy, test those too.
Confirm that the backup contains the expected:
- uploads;
- themes;
- plugins;
- must-use plugins;
- custom code;
- configuration files where included.
TheOneWP’s Backup Manager separates complete, database-only and files-only backup workflows so recovery points can match different operational needs.
Test a complete restoration
The most important disaster-recovery test is normally the complete restoration.
The test should answer:
If the production server disappeared today,
could this backup rebuild the website?
That requires testing the relationship between files, database and configuration rather than validating each component only in isolation.
Test restoration after a simulated server loss
For higher-value sites, periodically test a scenario in which the original server is treated as unavailable.
Do not depend on:
- files that exist only on production;
- configuration copied manually from production during the test;
- credentials stored only on the original server;
- undocumented production paths.
The objective is to expose hidden dependencies on the infrastructure the backup is supposed to replace.
Test restoration after a simulated database failure
Another scenario is:
WordPress files intact
+
Database unavailable or corrupted
Restore the database backup and verify that the application returns to the expected state.
Database Manager can help inspect the resulting database after recovery.
Test restoration after a simulated filesystem failure
The opposite scenario is:
Database intact
+
wp-content damaged or missing
Verify that the file backup can restore the required application and media data without unnecessarily overwriting newer database content.
Do not automatically restore everything for every incident
A complete backup is valuable, but complete restoration is not always the correct response.
Consider:
One deleted upload
→ restore relevant file if possible
One damaged plugin
→ restore or reinstall plugin
Database corruption
→ database recovery may be required
Complete server loss
→ full-site recovery may be required
The recovery method should match the failure.
Understand the difference between revisions and backups
WordPress revisions can help recover historical content changes.
They cannot rebuild a failed server.
For the distinction, see What Are WordPress Post Revisions, Really?.
A revision system and a backup system protect against different classes of failure.
Test the backup after major infrastructure changes
Repeat restoration testing after significant changes such as:
- new hosting provider;
- PHP upgrade;
- database-engine change;
- new object storage;
- new CDN;
- major ecommerce changes;
- new authentication architecture;
- major plugin changes;
- domain migration.
A restore procedure validated against last year’s architecture may no longer describe today’s website.
Test backups before risky WordPress changes
Before high-risk operations, make sure the recovery path is understood.
Examples include:
- major WordPress updates;
- PHP upgrades;
- database maintenance;
- large plugin updates;
- theme replacements;
- site migrations;
- large search-and-replace operations;
- security remediation.
For update workflows, Building a Staging-First WordPress Update Workflow explains how staging, validation and rollback can be integrated into routine maintenance.
Backup testing is especially important before migration
A site migration changes infrastructure while relying heavily on backup and restoration concepts.
Before beginning, confirm that the pre-migration recovery point can actually be used.
See Planning a WordPress Site Migration: a Checklist for the complete migration workflow.
Do not delete the backup after one successful restore
A restore test should operate on a copy or otherwise preserve the original recovery point according to the backup system’s design.
The backup may still be required for real recovery.
Maintain multiple backup generations where appropriate
One recent backup is not always enough.
Consider a compromise that remains undetected for several days.
Monday:
site compromised
Tuesday:
backup created
Wednesday:
backup created
Thursday:
backup created
Friday:
problem discovered
If every retained backup contains the compromised state, having several recent copies may not provide the historical recovery point you need.
Retention strategy should reflect the site’s risk model and rate of change.
Keep important backups outside production
If production failure destroys:
website
+
database
+
local backups
the backup architecture has failed to isolate the recovery data from the system it protects.
Important recovery points should be stored independently from the production environment.
Protect backup files
WordPress backups can contain highly sensitive information.
Depending on the site, they may contain:
- user information;
- email addresses;
- password hashes;
- API credentials;
- private content;
- customer information;
- order information;
- plugin secrets;
- configuration data.
Do not expose backup archives through publicly accessible web directories.
Protect restore-test environments too
A restore environment may contain a near-complete copy of production data.
Apply appropriate access controls and consider whether all production personal data is actually required for the test.
For broader staging isolation, see WordPress Staging Site Best Practices.
Clean up the restore environment after testing
Once the test is complete:
- remove temporary databases;
- remove temporary files;
- remove temporary credentials;
- disable temporary hostnames;
- remove test DNS records if used;
- remove production personal data where no longer required;
- revoke temporary access;
- retain only the documentation and evidence required by your process.
A forgotten restore environment should not become an abandoned production clone.
Record the final restore-test result
At the end of the test, create a concise record.
Backup:
2026-09-17 02:00 complete backup
Restore date:
2026-09-17
Result:
PASS
Database:
PASS
Files:
PASS
Media:
PASS
Authentication:
PASS
Forms:
PASS
Ecommerce:
PASS
Scheduled tasks:
PASS
External integrations:
PASS with production calls disabled
Recovery time:
52 minutes
Issues discovered:
2
Documentation updated:
Yes
This creates evidence that the recovery process has actually been exercised.
What should make a restore test fail?
A restore should not receive a passing result merely because most pages work.
Failure criteria can include:
- database cannot be imported;
- critical tables are missing;
- uploads are incomplete;
- administrator authentication fails;
- critical custom code is missing;
- checkout cannot complete in test mode;
- critical forms fail;
- essential integrations cannot be reconstructed;
- restoration exceeds the required recovery time;
- required credentials cannot be obtained;
- the documented procedure cannot reproduce the environment.
A WordPress backup restore testing checklist
- Select the backup to test.
- Record its date and type.
- Verify remote storage access.
- Verify archive integrity.
- Inspect backup contents.
- Confirm database inclusion.
- Confirm uploads inclusion.
- Confirm themes and plugins where required.
- Confirm custom code.
- Confirm configuration dependencies.
- Prepare an isolated environment.
- Prevent search-engine indexing.
- Disable production email.
- Disable live payments.
- Disable production webhooks.
- Restore database.
- Restore files.
- Update test-environment configuration.
- Perform serialization-aware URL replacement if required.
- Clear environment-specific caches.
- Test the homepage.
- Test representative frontend pages.
- Test WordPress admin.
- Test administrator login.
- Test relevant user roles.
- Verify posts and pages.
- Verify custom post types.
- Verify taxonomies.
- Verify users.
- Verify Media Library records.
- Verify physical media files.
- Upload a new media file.
- Verify theme templates.
- Verify plugins.
- Verify must-use plugins.
- Verify custom fields.
- Verify menus.
- Verify forms.
- Verify ecommerce data.
- Test checkout safely where applicable.
- Verify database tables.
- Compare critical record counts.
- Verify permalinks.
- Verify redirects.
- Verify canonical URLs.
- Verify XML sitemap.
- Verify scheduled tasks.
- Verify REST API functionality.
- Verify AJAX functionality.
- Inspect PHP and server logs.
- Test database writes.
- Test filesystem writes.
- Measure recovery time.
- Document every manual step.
- Record failures.
- Update the recovery procedure.
- Clean up the test environment.
- Record the final result.
How often should you test WordPress backup restoration?
There is no universal interval appropriate for every WordPress site.
The frequency should reflect:
- how often the site changes;
- how valuable its data is;
- how quickly it must recover;
- how complex the infrastructure is;
- how often the backup system changes;
- how often the hosting architecture changes.
A small brochure website and a high-volume ecommerce platform do not have the same recovery requirements.
At minimum, restoration should be retested whenever meaningful changes could invalidate the previously verified recovery procedure.
Backup automation does not remove the need for restore testing
Automated backups are valuable because they reduce dependence on somebody remembering to create a backup manually.
They do not automatically prove recoverability.
A mature process therefore combines:
Automated backup creation
+
Independent storage
+
Retention
+
Monitoring
+
Periodic restore testing
+
Documented recovery procedure
Using TheOneWP Backup Manager in a recovery workflow
TheOneWP’s Backup Manager can provide complete, database-only and files-only backup workflows depending on the recovery requirement.
A practical process can be structured as:
Create recovery point
↓
Store backup
↓
Select backup for testing
↓
Restore into isolated environment
↓
Validate database
↓
Validate filesystem
↓
Validate application
↓
Document recovery time
↓
Retain or improve recovery procedure
The backup module provides the recovery data. The restore test proves whether the operational process around that data actually works.
Database Manager can help verify restored data
After restoration, Database Manager can help inspect WordPress database tables, structures and records.
This can be useful when checking:
- custom tables;
- unexpectedly missing tables;
- plugin data;
- important records;
- environment-specific values.
For the underlying database model, see The WordPress Database Structure, Explained.
Do not confuse a settings export with a backup
A settings export may preserve selected configuration.
It does not automatically contain:
- posts;
- users;
- uploads;
- orders;
- comments;
- custom database tables;
- plugin files;
- theme files.
Settings Export vs. Full Backup: What’s the Difference? explains why configuration portability and disaster recovery should remain separate concepts.
Related guides
- Planning a WordPress Site Migration: a Checklist
- WordPress Staging Site Best Practices
- Settings Export vs. Full Backup: What’s the Difference?
- Preparing a WordPress Database for Migration
- Why Serialized Data Breaks Naive WordPress Migrations
Final recommendation
Do not evaluate a WordPress backup strategy by counting how many backup files exist. Evaluate it by whether those files can reconstruct the website within the recovery requirements of the project.
Start with a complete understanding of what the backup contains. TheOneWP’s Backup Manager can provide complete, database-only and files-only recovery points, but each type should be tested according to the failures it is expected to solve.
Restore backups into an isolated environment rather than over production. Keep that environment technically representative while preventing production email, payments, webhooks, scheduled integrations and search-engine indexing from behaving as though the restored copy were the real website. WordPress Staging Site Best Practices provides the broader framework for maintaining that separation.
After restoration, validate both the database and filesystem. Confirm users, content, custom post types, metadata, uploads, plugins, themes and custom tables. TheOneWP’s Database Manager can help inspect restored database structures and records when deeper verification is required.
Then test the application rather than merely viewing it. Log in, create content, upload media, submit forms, exercise critical ecommerce workflows in test mode, inspect scheduled tasks, verify APIs and review server logs. A restored homepage is only one successful request; it is not evidence that the complete website has recovered.
Measure how long the restoration takes and document every manual dependency discovered during the process. If recovery requires an undocumented credential, an old server file or knowledge held by one administrator, the restore test has identified a weakness that should be corrected before an actual incident.
Finally, repeat restoration testing when the architecture or backup process changes materially. A backup procedure validated against an older hosting environment, different PHP version or previous application architecture may no longer provide the recovery path the current WordPress site needs.
The practical standard is simple:
A backup is not proven
when it is created.
It is proven
when the website can be recovered from it.

