WordPress Move

Mert Yazicioglu

Abstract

WordPress Move will be a straightforward but also a feature-rich project that fits every kinds of installations just fine and makes the whole migration process a piece of cake for everyone. It will only require installing a plugin on the current WordPress installation and providing the necessary information requested. This tool will help the user to migrate to another server or change the domain name of the current installation.

Additional Information

The user will only install a plugin to his/her current installation and decide whether he/she wants to move onto a new server or only change the domain name.

If the user decides to change the domain name, plugin will first ask for the new domain name to replace with the older one. When the necessary information is provided, plugin will loop through the database records to change every instance of the old domain name with the newer one. This will affect system settings, widgets’ settings, plugins’ settings, attachment paths inside posts etc. Once everything is done, user will be forwarded to the login page of the ACP using the new domain name.

If the user decides to migrate from a server to another, plugin will first ask for the FTP connection credentials of the new server. Once a connection is established, plugin will upload a standalone script that will handle processes on the new server. After that, 3 different ways to migrate will be provided to the user to better fit his/her needs:

  • Option to move the content only: If the former installation only had posts with no attachments or customizations, this is the easiest way to go. Plugin will pass the database backup to the new server via FTP and the standalone script on the new server will download the latest version of WordPress and import the database backup to the new installation. After importing completes, script will loop through the database records to replace old server’s credentials with the new one’s where necessary. When everything is done, user should be redirected to the dashboard of the new installation. This method requires the content to be text-only and also user should be fine with upgrading.
  • Option to move the complete system directly as is: If the former installation is heavily customized or filled with attachments, this is the way to go. Plugin will backup the whole system as is and upload it to the new server via FTP. When uploading completes, plugin should redirect the user to the standalone script to continue with the replacement process where information related to the old server is replaced with the new server’s. After that, user should be redirected to the dashboard of the new installation. This method works fine with all kinds of installations as it moves the system as a whole, leaving nothing behind.
  • Option to move the system partially: If the former installation is heavily customized and filled with attachments but you don’t want some of the plugins installed or none of the attachments anymore, this is the way to go. Plugin will provide an interface that you can choose what to move or not. Therefore if you are planning to turn your website into a plain-text format with no images, you will not need to move huge attachments with you to the new server. In the same way, you will be able to drop plugins you will not use on your new server. Once your selection process is completed, the plugin will prepare the backup file and upload it to the new server. Standalone script on the new server will take care of the rest by replacing old server’s information with the new server’s where necessary etc. This method is the best if you want to get rid of things you will not use anymore to speed up the transition.

In all of these 3 methods, once the backup files are created, they will be made available to the user to download as well. That way, if the old server fails uploading backup files to the new server, the user can do it manually and continue with the standalone script to complete the migration. So the standalone script will also have the method selection screen for these users.

I am also thinking of implementing the ability to merge multiple WordPress installations if I have time. User will be able to select which WordPress installation should be used as the base so the others’ contents will be transferred to that one. While I think implementing this would be superb, I may not have time to do so. I will certainly do my best to implement it but in case I fail, I will add this feature with an update after GSoC’11 completes.

The whole system will be as user-friendly as possible, so it will be able to identify the problems and give instructions to fix them. The user will be guided throughout the process with a detailed documentation.

WordPress Move will be also developer-friendly as it will provide hooks to let developers extend the migration assistant for their needs. Therefore rewriting the whole system will not be needed to just add another process.

It will be easy to translate to make such a powerful tool available to everyone around the globe.

The whole system will use AJAX to notify the user on what is going on at the moment. That way, user will not try to deal with redirections.

Code samples