Relocating Wordpress: Why we created Complete Update URLs
By Emily Newsom
Relocating WordPress from one URL to another URL is a common task for us. When building a new site or making changes to an existing site we will often create a sandbox environment to develop and test our changes before full deployment. Moving from development to deployment requires that the URLs in the WordPress database be changed. At first glance, the WordPress documentation (http://codex.wordpress.org/Changing_The_Site_URL) suggests that only two database entries need to be updated. However, if any content has embedded absolute URLs (for example, linking to other internal pages) as you would normally see using the WYSIWYG link insertion tool, then these values do not get updated. There are even more problems if themes or plugins are used that keep their own serialized metadata--quite often this serialized metadata contains absolute URLs as well. What a mess.
There are a few plugins available that claim to update URLS, most notably the Velvet Blues release. However, we were never able to get the plugins to work properly. When we looked at the Velvet Blues code it was evident that it really didn't attempt to handle URLs embedded in serialized metadata.
So what to do?
Well after we wasted our time a few times trying other solutions, we ended up writing Complete Update URLs. We've used this plugin on a number of projects with complex themes, plugins, and UTF8 and it has always done its job. The business logic of the plugin is also very simple--load the entire database and deserialize any serialized data, perform a search and replace on that deserialized data, re-serialize, re-insert, and repeat.
So if you're looking to relocate your WordPress install and you want a solution that will work the first time, give Complete Update URLs a try:
Also check the FAQs for information on how to use the plugin: