The database
Initially you should update all references to your old domain in the database. The following SQL will take care of that, but first read these notes –
- This SQL assumes that you are using the default
wp_table prefix. Simply change this to your chosen table prefix if you have changed it. - Replace
database_namewith the name of the database which is used by WordPress. - Replace
www.old-domain.comwith the name of the domain from which you are moving away from. - Replace
www.new-domain.comwith the name of the domain that you are moving to. - While it’s unlikely, there may be other references to the old domain (in
wp_postmetafor example). To check, inPHPMyAdminyou should select the databse, click Search and search for any references to%www.old-domain.com%in all tables, and then manually update them as required.
Important – The example below will only update references to the old domain for the main site and the first child site. Should you have more sites you will need to replicate the code for the UPDATE wp_*_options... and UPDATE wp_*_posts queries, where * is the ID of the site.
USE `database_name`;
UPDATE `wp_options` AS `o1` SET `o1`.`option_value` = REPLACE(`o1`.`option_value`, 'www.old-domain.com', 'www.new-domain.com') WHERE `o1`.`option_name` IN (
'siteurl',
'home'
);
UPDATE `wp_options` AS `o2` SET `o2`.`option_value` = REPLACE(`o2`.`option_value`, 'www.old-domain.com', 'www.new-domain.com') WHERE `o2`.`option_name` IN (
'siteurl',
'home'
);
UPDATE `wp_posts` AS `p1` SET `p1`.`guid` = REPLACE(`p1`.`guid`, 'www.old-domain.com', 'www.new-domain.com');
UPDATE `wp_2_posts` AS `p2` SET `p2`.`guid` = REPLACE(`p2`.`guid`, 'www.old-domain.com', 'www.new-domain.com');
UPDATE `wp_blogs` AS `b` SET `b`.`domain` = REPLACE(`b`.`domain`, 'www.old-domain.com', 'www.new-domain.com');
UPDATE `wp_site` AS `s` SET `s`.`domain` = REPLACE(`s`.`domain`, 'www.old-domain.com', 'www.new-domain.com');
UPDATE `wp_sitemeta` AS `sm` SET `sm`.`meta_value` = REPLACE(`sm`.`meta_value`, 'www.old-domain.com', 'www.new-domain.com');
UPDATE `wp_usermeta` AS `um` SET `um`.`meta_value` = REPLACE(`um`.`meta_value`, 'www.old-domain.com', 'www.new-domain.com');
The important bit that I missed
In a network installation a DOMAIN_CURRENT_SITE constant is declared in wp-config.php. Simply open that file and update the value of that constant to your new domain and you should be good to go.
One more consideration
In some cases WP_HOME and WP_SITEURL constants may be declared in wp-config.php, and these will of course override any entries in the database. I’d suggest searching the file for those entries just in case, and if they are present I’d recommed removing them (or at least commenting them out), as it’s much better to use the DB entries.
define('WP_HOME', 'http://www.old-domain.com');
define('WP_SITEURL', 'http://www.old-domain.com');