How to MANUALLY Migrate Your WordPress Site
While the thought of manually transferring a site can be overwhelming, it’s actually not that difficult if you know what’s going on the behind the scenes and you have an understanding of the basics. I’ve had many headaches, frustrations and lost hairs due to failed migrations in my day and it was all because I didn’t have a understanding of what goes into migrating a WordPress site. My hope is that by the end of this tutorial, you’ll have a basic understanding of what goes into a WordPress migration and that you’ll have a good grasp of the most important elements to double check when you migrate a site even if you use a duplicator or cloning tool.
A detailed transcription of this tutorial is in the works but until then, here’s a simple and detailed version of my migration process! For advanced users, the simple checklist will most likely suffice. For newbies and those who want to be walked through the process step by step, I’ve broken the process down to 3 phases for you. I hope this helps all of your migrating experiences and saves you some heartache and hair!
If you found this tutorial helpful…
I highly recommend checking out my cPanel Course which provides more invaluable, in-depth knowledge of WordPress files, phpMyAdmin, domains, email, SSL and more!
How to Manually Migrate WordPress Website
Simple Checklist:
- Backup site files
- Export database (SQL file)
- Install WordPress for new site
- Import database (SQL file)
- Replace wp-content folder
- Edit wp-config.php file with correct settings
- Replace URLs
- Delete old site
Detailed Checklist:
Phase 1: Preparing the site for transfer
- Login into development site Cpanel
- Go into File Manager
- Download wp-config.php file
- Zip up wp-content folder
- Download zip folder
- Go into phpMyAdmin
- Export site database (sql file)
Phase 2: Setting up the site on the new host
- Login into new hosting cpanel
- Install WordPress
- Go into phpMyAdmin
- Import sql file in new database
- Replace old URL with new URL in “_options” table
- Go into File Manager
- Replace wp-content folder with zipped file
- Extract zipped file
- Edit wp-config.php file with new database, user, password and wp table prefix
- Login into new site, find and replace all image/file paths with new URL
Phase 3: Clean up
- Double check permalinks and ALL image, link and file paths in new site
- BACKUP new site files and database
- Go to old hosting account
- Delete old database
- Delete wp files
- Remove sub or addon domain
Good WordPress duplicating and cloning tools:
Similar tutorials:
Want more free tutorials and layouts?
I'd love to do more. But as you can imagine, it takes a lot of time and effort to put these together. In order for me to do these, I need to take time away from my business which is what's currently paying the bills. If you'd like to leave a tip and show your appreciation, it would show me that the time I invest in these is worth it and will help keep more coming!
- Josh
Or you can
This is fantastic! I like how you emphasize the speed benefits of using cPanel over FTP. And the hints that it could get even more manual haha. Very easy to follow for something with steps required in several different areas. Very nicely done.
Thanks so much, Terry! Yeah I was originally going to go into even more detail on manually setting up the database and such but tried to make it somewhat user friendly for the beginners. Really appreciate your feedback!
thanks Josh, does it work the same way if you’re doing it from subdomain to subdomain
Thanks, Leisa! Yep it works the exact same way. As long as the files are in the right directory and the database has the right URL, then you’re all set.
A weekly Divi Chat listener here … you sure didn’t waste any time getting this thorough tutorial to us! I can’t wait to try this out. Definitely a worthwhile skill to learn and be comfortable using. The less stressed I can get “behind the scenes” the better. Thanks
Thanks Sue! Yep I had to stick to my word on this one! Plus after that Divi Chat, I was already in the “migration mindset” if you will 🙂 And yes, anything I can do to help others feel less stressed during migrations is what this one was all about!
Hey Josh! Great tutorial – it certainly makes the whole process a lot less daunting! I do have a question – so downloaded the wp-contents folder, wp-config.php file and the database from the old site. And then uploaded wp-content & the database onto the new site and edited the database name in the new sites wp-config.php file. Unless I missed it, I didn’t see anything being down with the old site’s wp-config.php file. So, if that’s the case, what’s the reason for downloading that file from the old site? Apologies if it was in there and I totally missed it!
Hey Sharon! Yeah I could’ve been a little more clear on that. I usually either replace the wp-config and just edit the database name, username and password if need be or just edit those settings on the current config file. But regardless, I always backup the original just incase I ever need it as a back up or view the old settings. Hope that helps and makes sense!
Yep, makes sense. Thanks for the clarification!
I also just reread my original question – wow, sorry about the typos and sentences that don’t even make sense!!
haha, no problemo! I hate when that happens 🙂
Easy to follow tutorial Josh, thanks!
Thanks, Jonathan! Appreciate your feedback man.
Great vid but I have a question, I need to migrate a site to another host but use the same domain etc. will that work, will the new host allow me to create the same domain? They are both with hostgator.
Yeah the process will be similar, Paul. Things can get a little tricky with same domains depending on the host. I’d recommend doing a support chat with them just incase but the process of moving the database, the files, etc over will be the same. You’ll just end up changing the domain DNS to point over to the new host once it’s ready. Hope that helps!
Thanks’ for a great tutorial. I have had real problems moving sites with higher content and thanks to you I now have a solid reliable way of moving them.
AWESOME to hear. Thanks for the feedback, Jonathan!
I’m not only loosing my hair but my scalp too… Nothing work and I can’t even concentrate on this anymore… I’m just gonna rebuild the whole site it will take less time !!
Thank you for your work, anyways.
Migrating sites can certainly be tough, I’ve been there man. I’d just recommend going through the steps one at a time and making sure all settings are correct in the files mentioned then you should be ok!
Hey Josh!
After you use the Velvet Blue, can you delete the plugin?
Yep Rodrigo! Once all URL’s are changed you’re good to delete it.
Hi Josh, this tutorial has saved my bacon! I normally use a plugin which 9/10 times never fails me but I have just had one site which didn’t cope too well and I needed to transfer it manually.
Your tutorial is so easy to follow and it worked like a charm; thanks so much for taking the time to put it together.
In following along with your tutorial, I learned a lot more about the WP backend as well – a little, unintended, bonus training!
Thanks again, Kerrin 🙂
Awesome to hear, Kerrin! Yeah most cloning and duplicating tools are great but when things go awry (and eventually they do), it’s so important to know how to do it manually. Glad to hear it worked well for you and you got a little more familiar with the backend. I actually just released a little mini course on cPanel which goes even further into databases, WP files, phpMyAdmin and more if you’re interested in learning more! It’s like the tutorial but in 12 videos targeted to the most important aspects of cPanel. Anywho, thanks for the comment!
Thanks for this. It seems like one of the few and concise articles explaining the process without using a plugin (none worked for me).
I have a question that maybe you can answer. I have been trying to zip my contents folder through my online file manager in the browser, and it just doesn’t finish. I get the status bar, but it eventually times out. You said it needs to be a .zip file, but can I drag the folder onto my computer (windows 10) via an ftp client and zip it on my computer, or does the online file manager perform some special zip function?
either way, thanks a ton because this was super helpful.
Yeah Keith sometimes that works if it’s a small file but for big ones, I prefer to do it right in the cPanel File Manager instead of FTP. Things in FTP generally take waaaay longer than going through cPanel. Hope that helps!
Hi Josh, this isn’t the first time I’ve done a manual transfer, but I haven’t done it much and found your guide here helpful for getting my head around the whole thing again. And I liked your approach in letting the host do the packaged WP install, so that I only need to bring over wp-content and the database.
Something I ran into today, though, moving a site online from a MAMP setup on my machine, was a site permissions hangup. Everything looked good with the file upload and database import, and it took me a little fooling around before I noticed that permissions on the whole extracted wp-content directory were wrong. Once I saw it, I recalled that this had happened the last time I did a manual transfer, too. (That time, with SiteGround; this time, with HostPapa.) The only way I know to change permissions directory-wide (“recursive”) is using an FTP client — which took a while in my case, unhappily. If there’s a way to do it in cPanel’s file manager, I’d like to know.
I tried both Better Search Replace and Velvet Blues and couldn’t understand why they didn’t seem fully operable. It makes sense in retrospect, of course. I’m inexperienced enough, though, that the strange results I was getting when I ran their find-replace routines didn’t clue me in to the permissions issue right away.
Anyway, I may have missed it but don’t recall your mentioning this among potential trip-ups addressed in the tutorial. Thought it worth mentioning. This aside, your guide was very useful to me, again. Thank you for providing it!
Not for sure on this one, Paul. Might want to check with your hosting company to see if they can assist. Could be a number of things depending on files like the .htaccess file. You can also manually change the URL’s via phpmyadmin by doing a find and replace in the database. That might be work a try. I just use Velvet Blues because it’s quicker and I can see the changes in the dashboard.
Just followed you step by step and amazingly done!!! Thanks Josh
Awesome to hear, James!
Excellent tutorial Josh. Would this work the same way for a wordpress having WooCommerce in it?
Yep! Nothing would change at all unless you have any license keys or Woo settings that need to be adjusted to the new domain.
Great stuff.
Thanks for the content.
I’ve done exactly as per your instructions. I’ve changed the “Site URL” & “Home” link from the database ‘Option’ but the new site is getting redirected to my old site. I’ve tried to fix it but couldn’t find anything
Can you help me out?
Thanks
Love from India
Hi Avee, if you changed the links but it’s still being redirected, I’d make sure that the database settings are correct in the wp-config file and to see if there’s any redirection or forwarding on the actual domain. May want to reach out to hosting support if that’s the case.