So this blog runs as part of my WP Multi Site network. Multi-site is great – one click to upgrade the WP core for all sites, one setup for caching etc.
One problem is local dev though. You don’t want to pull the whole network down to your local machine to work on a theme (it’d take ages) but you still want to develop against the posts and pages that are on the live site.
Interesting solution to this:
WP Multi-site stores DB tables with different prefixes for each site. So for instance you’d have wp_2_posts, wp_2_options etc. for site No. 2.
Let’s try altering a few bits in wp-config.php to make use of this:
define('WP_HOME', 'http://localsite.loc'); define('WP_SITEURL', 'http://localsite.loc'); define('DB_NAME', 'your_multisite_db'); define('DB_USER', 'your_multisite_user'); define('DB_PASSWORD', 'yourpw'); define('DB_HOST', '127.0.0.1:3307'); $table_prefix = 'wp_2_';
Finally create an SSH tunnel so you can access the DB running on your server on local port 3307 (Your local MySQL will be running on 3306). …..presuming you need to do this of course (article all about this here):
ssh -L 127.0.0.1:3307:127.0.0.1:3306 user@yourserver -N
That done, you should be good to go! One important caveat with this method: wp_users and wp_usermeta tables are global to all sites in the Multisite network (along with a few others). Therefore you won’t be able to login on your local copy and anything involving users on the front end will be screwed (like displaying post authors for instance). This really wasn’t much of a problem for my purposes on this site though. …so I thought I’d share.
Hope this helps someone!