Posted on

Restoring or Migrating WordPress Without Plugins: The Definitive Guide to the Manual Method

Modern WordPress backup plugins (like UpdraftPlus, All-in-One WP Migration, etc.) have greatly simplified site restoration and migration operations. However, there are situations where you are left with only the “raw” backup of the site—that is, the file folder and the SQL database dump.

If you find yourself in this situation, don’t panic! The manual method, while requiring a little attention, is perfectly valid and will allow you to get your site back online. This guide will walk you through the process step-by-step.

🎯 Prerequisites: What You Need to Have Ready

Before starting, make sure you have:

  1. The complete WordPress file folder (the one that includes wp-admin, wp-content, wp-includes, wp-config.php, etc.).
  2. The database export file in .sql format.
  3. Access to your cPanel/Plesk or hosting control panel.
  4. An FTP client (like FileZilla) and login credentials.
  5. A text editor (like VS Code, Sublime Text, or Notepad++ – not Windows Notepad) to modify the SQL file.

Step 1: Preparing the Destination Environment

First, we need to prepare the space where the site will be restored.

1.1 Creating the Folder and Uploading Files

  1. Create the Folder: Access your hosting control panel and create the domain or subfolder that will host the site (e.g., public_html/newsitesname).
  2. Upload the Files: Use your FTP client (or the cPanel File Manager) to upload all files and folders from your backup into the folder you just created. This process may take several minutes depending on the size of your site. ⏳

1.2 Creating the New Database

  1. Create the DB: Go to your hosting control panel and create a completely empty new MySQL database (for example, through the MySQL Databases section on cPanel).
  2. Create User: Also create a new user for this database and grant them all privileges on that database.

💡 Important: Make a note of the Database Name, the Username, and the Password of the newly created database. You will need them later.


Step 2: Database Adaptation and Import

This is the most delicate step, where we tell the database to “know” what the new site address is.

2.1 Modifying the SQL File (URL Replacement)

The WordPress database stores the old site’s URL in many tables, which is the main cause of problems after a manual migration. We need to correct these references:

  1. Open the SQL File: Open the .sql file of your backup with an advanced text editor (like Notepad++).
  2. Perform Replacements: Use the Find and Replace function to update all references to the old address:
    Find (Old Domain) Replace With (New Domain)
    https://www.olddomain.com https://www.newdomain.com
    http://www.olddomain.com http://www.newdomain.com
    https://olddomain.com https://newdomain.com
    http://olddomain.com http://newdomain.com

    Attention: It is essential to replace both versions with and without www. and both http and https to avoid issues. Make sure your editor handles replacement across the entire document and save the modified .sql file.

2.2 Importing into the New Database

  1. Access phpMyAdmin: Through your control panel, access phpMyAdmin and select the empty database you created in Step 1.2.
  2. Import: Click on the Import tab, choose the modified .sql file from your computer, and start the import.
  3. Verify: Once the import is complete, the database will no longer be empty and will contain all the tables from your old site.

Step 3: Connecting Files to the New Database

The final step is to tell your WordPress site (the files) what the database credentials (the data container) are.

3.1 Modifying the wp-config.php File

  1. Locate: In the file folder just uploaded to the server, find and open the crucial file: wp-config.php.
  2. Update Credentials: Look for the following lines and modify them with the data of the new database you created in Step 1.2:
    // The name of the database for WordPress
    define( 'DB_NAME', 'new_database_name' );
    
    // MySQL database username
    define( 'DB_USER', 'new_database_username' );
    
    // MySQL database password
    define( 'DB_PASSWORD', 'the_new_database_password' );
    
    // MySQL hostname (usually 'localhost')
    define( 'DB_HOST', 'localhost' );
    
  3. Save: Save the wp-config.php file and re-upload it via FTP to the server, overwriting the previous one.

🚀 Launch and Final Test

Your site is now online!

  1. Test the URL: Try opening the new site address (https://newdomain.com) in your browser. You should see your restored site.
  2. Verify Login: Try logging into the administration area (https://newdomain.com/wp-admin) with your old credentials.
  3. Permalinks: If the site shows “Page Not Found” errors (404), go to Settings > Permalinks in the administration area and simply click Save Changes without altering anything. This “refreshes” the permalink configuration on the new server.

Congratulations! You have manually restored a WordPress site using only the files and the database. 🎉