Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
Copying wp-content is necessary but not sufficient for a WordPress move. The folder contains your themes, plugins, and uploaded media, while posts, pages, comments, users, settings, and other site data live in the database. A reliable migration therefore combines a file backup, an SQL export, matching configuration, a secure transfer, and testing before DNS is changed.
This guide shows how to move the folder safely, restore the database, handle a domain or path change, and recover from the failures that commonly follow an incomplete transfer.
Recommended Free Tools
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
WordPress Multisite Administration | $34.38 | Buy on Amazon |
| 2 |
|
Mon Site WordPress – Volume 2 – Administration & Utilisation (French Edition) | $9.90 | Buy on Amazon |
| 3 |
|
WordPress 24-Hour Trainer | $3.95 | Buy on Amazon |
| 4 |
|
Teacher Record Book | $4.89 | Buy on Amazon |
What you must move—and what wp-content does not contain
WordPress describes wp-content as the user-owned area of an installation. It normally contains:
plugins: installed plugin code and, sometimes, plugin-created files.themes: active and inactive themes, child themes, and customizations stored in theme files.uploads: images, documents, videos, and other media arranged by year and month.- Other directories created by plugins, themes, or your hosting setup.
Your root-level wp-config.php is separate. It stores database connection details and may define a custom content location. Posts, pages, comments, users, menus, widget settings, plugin settings, and WordPress options are stored in MySQL or MariaDB, not in the folder. WordPress’s file-backup guidance identifies both wp-config.php and wp-content as important files to preserve: WordPress file-backup documentation.
#1 Best Overall
Consequently, these combinations have different results:
| Transferred items | What is preserved | What is missing |
|---|---|---|
wp-content only |
The themes, plugins, uploads, and other files that were copied | Database content, users, settings, URLs, and configuration |
| Database only | Posts, pages, comments, users, options, and plugin records | Theme files, plugin code, media files, and other filesystem data |
| Complete files plus database | A restorable copy of the site, provided configuration and paths match | Nothing essential, although server-level services may still need to be recreated |
The WordPress migration handbook notes that a move to another server does not require reinstalling WordPress: Migrating WordPress. In practice, you install or provision compatible core files on the new host, then restore your site’s files and database.
Before copying: create a rollback point
Do not begin by deleting the old site or changing DNS. Make a complete, offline-accessible backup first. Keep the SQL export, the downloaded files, and configuration notes together so that you can restore the old host or retry the migration without guessing.
Download the files
At minimum, download the entire wp-content directory and the old wp-config.php. A full file backup of the WordPress installation is safer because it preserves any custom root files, web-server rules, or verification files. If you use an archive, store a copy outside the public web root and verify that it can be opened before proceeding.
Export the database
Use your host’s database tool, such as phpMyAdmin, or a command-line export to create an SQL dump. The database-backup handbook explains the required process and precautions: Backing Up Your WordPress Database. Protect the dump as you would protect passwords; it contains site content and may contain personal information.
Record the old configuration
Open the old wp-config.php and record:
DB_NAME,DB_USER,DB_PASSWORD, andDB_HOST.$table_prefix, including any non-default prefix.- Authentication keys and salts, if you need to preserve existing sessions and cookie behavior.
- Any
WP_CONTENT_DIRorWP_CONTENT_URLdefinitions. - Debug, cache, object-cache, or host-specific constants that may affect the new environment.
The wp-config.php reference confirms that WordPress can place wp-content outside the application directory when the content-location constants are defined. A move must reproduce those paths or remove the custom definitions and place the folder in the standard location.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallStep 1: transfer wp-content securely
SFTP is the preferred method when your host offers it. Learn WordPress recommends SFTP over FTP because it encrypts the password during transmission: Migrate, Copy, Or Clone A Site. FTP can download files, but it does not provide the same protection for credentials.
- Collect the old host’s SFTP hostname, port, username, and authentication method. The standard SFTP port is commonly supplied by the host; use the value in its account instructions rather than assuming one.
- Connect with an SFTP client and verify that you are in the correct document root. A staging directory or another site’s root can look similar.
- Download the complete
wp-contentdirectory, includingplugins,themes, anduploads. Preserve case, nested directories, symbolic-link behavior where supported, and hidden files inside the directory. - Download
wp-config.phpand any other root files you intend to preserve. - Compare the local file count and archive size with the host’s file manager where possible. A transfer that ends early can leave a site apparently intact while omitting large media files.
Do not put the SQL dump or an archive containing wp-config.php in a publicly accessible directory. Remove temporary archives from the web root after downloading or restoring them.
Step 2: prepare the new host
Create the destination database and user
Create an empty MySQL or MariaDB database and a user with full permissions to that database. Note the new database name, username, password, host, and port if the host supplies a non-default port. These values will replace the old connection values in wp-config.php.
Provide compatible WordPress core files
Identify the new document root and install a WordPress core version compatible with the old site’s PHP and database environment. If you copied the complete WordPress files, you can use those files instead of a fresh core installation, but keep a backup of any starter files created by the host first. Do not overwrite a working destination until you know which files are being replaced.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Check the destination path
Confirm whether the site will run at the domain root, a subdirectory, or a temporary host URL. The final path determines the values WordPress uses for home, siteurl, rewrite rules, and media URLs. A path change is a migration task, not merely a file-copy task.
Step 3: upload wp-content without losing the destination copy
- In the new installation, rename the starter
wp-contentdirectory to a dated backup, or copy it outside the document root. - Upload the old
wp-contentdirectory to the WordPress directory. Ensure the resulting path is exactly the one expected by the installation, normallyyour-site/wp-content. - If you must merge rather than replace, copy the old subdirectories deliberately and check for files that exist only on the new host. Do not blindly merge cache directories or host-generated files.
- Preserve ownership and permissions according to the new host’s documented defaults. The web-server user must be able to read PHP files and, where WordPress needs it, write to upload and cache directories.
Incorrect ownership or permissions can cause failed media uploads, plugin update errors, “cannot modify headers” symptoms, or a blank page. Avoid making every file world-writable; ask the host for its normal owner, group, directory, and file modes if they are not documented.
Step 4: import the database and update wp-config.php
Import the SQL dump
- Open the new host’s database tool and select the empty destination database.
- Import the SQL file from the old site. If the host imposes an upload-size limit, use its command-line import method or request the supported large-file procedure rather than truncating the dump.
- Wait for a successful completion message and inspect the table list. Tables should use the prefix recorded from the old configuration, which may not be
wp_.
Point WordPress at the new database
Edit the destination wp-config.php and set DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST to the new host’s values. Set $table_prefix to the prefix used by the imported tables. Keep the old salts if you want existing authentication cookies to remain valid; replacing them logs users out, which can be a deliberate security choice.
If the old site used WP_CONTENT_DIR or WP_CONTENT_URL, either reproduce a valid equivalent path and URL or remove those definitions and use the standard directory. A mismatched custom path makes WordPress report missing themes or plugins even when the files are present.
Rank #3
Step 5: handle a domain or path change safely
If the domain and path are unchanged, the imported database can usually be tested without a broad URL replacement. If either changes, update WordPress’s stored home and siteurl values and search the database for the old URL.
Update the core URL settings
The home and siteurl values are normally in the options table, using the imported table prefix. You can edit them in the database tool or use a controlled WordPress command-line procedure. Make the scheme explicit: https:// and http:// are different values, as are root and subdirectory paths.
Use serialization-aware search and replace
Many plugins store arrays or objects as serialized strings. A blind SQL replacement can change the length recorded inside a serialized value and corrupt settings. Use a migration-safe search-and-replace utility that understands serialized data, test it on a backup, and exclude tables or columns that the utility documents as unsafe. Search for the old domain with and without a trailing slash when the tool requires separate patterns.
Regenerate rewrite rules
After the site loads, open Settings → Permalinks in the WordPress dashboard and click Save Changes without changing the structure. This rewrites the rules for the new server. If the site is installed in a subdirectory, verify that the web server’s document root and rewrite configuration point to that directory.
Step 6: test before changing DNS
Use the new host’s temporary URL, hosts-file override, or preview feature so you can validate the installation while the old site still serves visitors. Test logged-out and logged-in behavior.
- Open several front-end pages, including a page with an image gallery and a page with a contact or checkout form.
- Sign in to
/wp-adminand confirm the expected administrator account, menus, widgets, active theme, and plugin list. - Open the Media Library and a selection of older uploads. Check that image thumbnails, document downloads, and generated sizes work.
- Inspect browser developer tools and server logs for 404, 403, PHP fatal, mixed-content, or database-connection errors.
- Submit forms and verify mail delivery through the new host’s configured mail service.
- Check scheduled tasks, backups, cron jobs, webhooks, payment callbacks, and external API credentials. Hostnames, IP allowlists, and environment variables may have changed.
- Clear page, object, and CDN caches only after confirming that the underlying files and database are correct.
Keep the old host intact during this validation period. If you discover a missing file or incorrect setting, the old site provides a working reference and a fallback.
Step 7: switch traffic and finish the cleanup
When the new copy passes testing, lower the DNS TTL ahead of the planned cutover when practical. Change the DNS records only after validation, then monitor both hosts during propagation because resolvers may retain the old record until its previous TTL expires.
Rank #4
- Keep track of everything from attendance to test scores
- Spiral bound
- Measures 8-1/2" x 11"
- Record the exact time of the DNS change and keep the old host available.
- Visit the site from more than one network and confirm that requests reach the new server.
- Recheck login, forms, media, permalinks, HTTPS redirects, and scheduled jobs after DNS begins resolving to the new host.
- Review access and error logs for unexpected traffic or missing assets.
- Remove SQL dumps, archives, and temporary diagnostic files from public directories.
- Retain the old host and the verified backup until you are confident that no delayed job, webhook, or rarely visited URL depends on it.
Common failure points and their fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| “Error establishing a database connection” | Wrong database name, user, password, host, port, or table prefix in wp-config.php |
Compare each value with the new host’s database panel and confirm the user has privileges on the imported database. |
| WordPress says the theme or plugin is missing | wp-content was uploaded to the wrong directory, a custom content path was not recreated, or the transfer omitted files |
Check the physical path, WP_CONTENT_DIR/WP_CONTENT_URL, directory ownership, and the complete transfer. |
| Images show broken links or return 404 | Uploads were not copied, URL/path values still reference the old site, or rewrite rules are stale | Compare the uploads tree, perform a serialization-safe URL update if needed, and save permalinks. |
| Blank page or HTTP 500 error | PHP incompatibility, a fatal plugin/theme error, damaged files, or unsuitable permissions | Read the PHP and web-server logs, enable temporary debugging on a protected staging copy, deactivate the reported extension, and restore the affected files from backup. |
| Uploads and plugin updates fail | Incorrect owner, group, or write permissions | Apply the new host’s documented permissions and ownership rather than broad world-writable modes. |
| Users are redirected to the old domain | home, siteurl, serialized options, or hard-coded theme/plugin URLs still contain the old address |
Update the core URL values and run a serialization-aware search and replace on a verified backup. |
| Some visitors see the old site after cutover | DNS or browser/edge caching still holds the previous record | Allow the previous TTL to expire, purge controlled caches, and verify authoritative DNS before changing application files again. |
Manual transfer or a migration plugin?
A manual move gives you direct control over every file, SQL dump, configuration value, and rollback point. It is appropriate when you have SFTP and database access, can inspect logs, and need to understand or correct a domain or path change.
Free tools Windows power users keep installed
One-click scans. No signup required.
A migration plugin can package some of those steps inside WordPress, but suitability depends on details that vary by product and release. Evaluate any tool against these questions before relying on it:
| Decision factor | Manual transfer | Migration plugin |
|---|---|---|
| File and database control | Direct control of directories, SQL, and configuration | Depends on what the plugin includes and permits you to export |
| Domain changes and serialized URLs | You choose and verify a serialization-aware method | Check whether the current version handles serialized data and path changes safely |
| Access required | Usually SFTP plus database access | May reduce server access requirements, but still needs compatible destination access |
| Rollback transparency | Separate files and SQL can be inspected and restored independently | Rollback depends on the archive format, limits, and restore process |
| Archive-size limits | Controlled by your SFTP and database tools | May be constrained by upload limits, licensing, or the tool’s archive design |
| Cost and support | Uses the access supplied by your hosts; support is generally your responsibility | Terms, support, and any paid limits vary by tool and should be checked before migration |
Regardless of method, keep an independently verified file backup and SQL export. A tool-generated package is not a substitute for a rollback copy you can inspect.
Security and operational checklist
- Use SFTP instead of plain FTP when available.
- Protect
wp-config.php, SQL dumps, and archives from public access. - Use unique destination database credentials and grant only the permissions required by the database.
- Delete temporary archives and diagnostic files after the move.
- Confirm HTTPS certificates, redirects, and secure-cookie behavior on the new host.
- Review administrator accounts, API keys, cron jobs, and webhooks after the cutover.
- Keep the old host and a verified backup until delayed tasks and infrequently visited URLs have been checked.
Direct answers to the questions most people ask
Can I copy only wp-content?
You can copy it to preserve themes, plugins, and uploads, but it will not recreate the site by itself. You also need the database and compatible configuration.
Do I need to reinstall WordPress?
No. The migration handbook states that moving to another server does not require a reinstall. Provide compatible core files, restore the database and content directory, and update configuration for the new environment.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →What if the old host used a custom content directory?
Record and reproduce the old WP_CONTENT_DIR and WP_CONTENT_URL settings, or move the files to the standard location and remove those custom definitions. The filesystem path and URL must agree.
When can I cancel the old hosting account?
Wait until DNS has propagated, the new site has passed functional checks, scheduled tasks and integrations have run successfully, and you have a restorable backup. Keeping the old host during that verification window is your simplest rollback option.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

