Några tips för att flytta och byta url på en WordPress-installation
19 Nov 2009
Utveckling
Igår skulle jag flytta en WordPress-installation som delade databas med en övrig webbplats och dessutom skulle byta url. Det efter att vi laddat upp massor av bilder i installation. Samlat innebar detta att jag hade två problem.
- Hur flyttar man smidigast enbart WordPress-tabellerna från den ursprungliga databasen
- Hur byter man enklast url’er på de uppladdade bilderna?
Den första uppgiften fick jag leta ett tag innan jag löst men den här bloggen har ett riktigt bra förslag. Man gör en uppslagning på databastabeller som matchar prefixet på WordPresstabellerna. Detta borde vara smidigt om man vill exportera t.ex. en specifik databas ur en Wordpres Multiuser-installation.
mysql databasename -u [root] -p[password] -e ‘show tables like ”wp_%”‘ | grep -v Tables_in | xargs mysqldump [databasename] -u [root] -p[password] > wpdump.sql
Vad bildadresserna beträffar är det inte speciellt krångligt. Den här SQL-koden löser det mesta:
update wp_posts set post_content = REPLACE(post_content, ‘http://oldurl.se’, ”http://newurl.se”);
Då ersätts alla bildadresser till att referera till den nya servern.
Helst vill man ju inte byta domännamn på det här sättet men ibland måste man.

november 19th, 2009 kl 11:27 f m
Funkar inte http://codex.wordpress.org/Changing_The_Site_URL ?
november 19th, 2009 kl 11:35 f m
Aha. Relocate skall fixa biffen? Ja det är ju mycket smartare. Onödigt att gå över ån efter vatten.
november 19th, 2009 kl 11:40 f m
Jag har inte testat, men det ser ju onekligen rätt enkelt ut
november 20th, 2009 kl 12:01 e m
Tycker det verkar rörigt med alla php-grejer de lagt till för att databasen ska ordna upp sig, och jag får det inte riktigt att fungera.
Bytte faktiskt nyss sökväg på en wp-installation i dessa tre steg i databasen (förutom filöverflyttning):
1) Ändra sökvägar i wp_options: siteurl, home, upload_path
2) Ändra guid i wp_posts
UPDATE wp_posts SET guid = REPLACE (
guid,
‘http://oldurl.com/',
‘http://newurl.com/‘)
3) Enligt ovan, även ändra post_content i wp_posts:
update wp_posts set post_content = REPLACE(post_content, ‘http://oldurl.se’, ”http://newurl.se”);
Med backup av databas före naturligtvis.