Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm migrating a Wordpress install and trying to get down the correct process for doing so.

I've tried using the method I thought would work, but it didn't.

My files and database are in place, but when I visit the wp-admin the theme manager tells me this - The active theme is broken. Reverting to the default theme.

Unfortunately if you then re-activate it, it work's but loses all it's widgets etc.

I've been using a search and replace function to change all the instances and options using the old domain with this script - http://interconnectit.com/124/search-and-replace-for-wordpress-databases/

Which is pretty cool.

I'm just replacing

http://domain1.com

with

http://domain2.com

although even running this before I access the site doesn't seem to stop the problem of the broken theme and thus losing all the widgets.

Anyone know how I can migrate this site without having the ass-ache of losing all the widgets (of which there are way to many to do manually).

share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

Try the XCloner plugin: http://wordpress.org/extend/plugins/xcloner-backup-and-restore/.

I use XCloner to move sites between my live server and my dev server. It takes care of all the migration differences between the domain, database, etc. It preserves all my widget settings, custom menus, etc.

share|improve this answer
add comment

The Widget settings are stored in the theme_mods DB entry for your Theme (i.e. {theme-slug}_theme_mods).

The problem with a database search-and-replace is that theme_mods is a serialized DB entry. So if the new domain name has a different string length than the old domain name, the serialized theme_mods DB entry (as well as any other serialized DB entry that includes a domain name, such as attachment URLs, etc.) will become malformed.

Ipstenu explains the issue well:

See some widgets and theme settings store your data and include your URL. This is done with data serialization as well, which means the length of your URL matters. If you changed from ipstenu.org to Lpstenu.org, then you would be perfectly safe doing a total database search/replace of the domain name! But since I’ve proposed changing it to Lipstenu.org, I can’t do that. Any field that counted my domain name would be off by one, and thus invalid, and thus wipe out my settings. Oh and to make it worse? Depending on how you uploaded your media and included it in your site, your postmeta table might also be filled with this.

So:

  1. Switch back to the default Theme
  2. Go into the database and fix the serialized-array string lengths that have been impacted by the URL domain-name change
  3. Activate your Theme

Then, your original theme_mods should be restored.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.