What this problem looks like
Restore order matters: files first or database first both work if you avoid using the site mid-restore. Many hosts offer one-click snapshot restore that beats manual imports when the whole server is intact.
Partial restores, such as posts only or plugins only, need matching database rows. Importing posts SQL without uploads breaks featured images.
Step 1: Full restore on the same domain
- Delete or rename current
wp-contentif it is corrupted. - Upload backup
wp-contentvia File Manager, SFTP, or FTP. - Drop all tables or use a fresh database, then import the SQL file.
- Log into
wp-adminand save Settings → Permalinks.
Step 2: Import database with phpMyAdmin or SSH
Large imports may exceed upload limits. Split the file, use the mysql command over SSH, or ask the host to import for you.
Only run the commands below if you have SSH access to the server.
mysql -u DB_USER -p DB_NAME < ~/backups/mysite-2026-07-08.sql
wp db import ~/backups/mysite-2026-07-08.sql Step 3: Restore with a backup plugin
UpdraftPlus and similar tools restore from archives inside wp-admin. Install a fresh WordPress copy if wp-admin is dead, then upload the plugin and restore components in the order the wizard suggests.
Step 4: Fix broken media and permalinks
If images 404 after restore, the uploads folder path or year/month structure is wrong. Confirm wp-content/uploads matches database attachment paths.
Resave permalinks and clear CDN cache after any restore.
Step 5: When restore fails login
Database URL options may point at the old domain. Update siteurl and home in wp_options or run wp search-replace over SSH.
If a security plugin blocks login after restore, rename wp-content/plugins to plugins.disabled via File Manager, SFTP, or FTP, then restore access and reconfigure the plugin.
When to stop DIY and hire help
A bad restore can leave mixed old and new data. BugShield restores WordPress sites from backup at a confirmed fixed price when DIY imports fail or time matters.