WordPress: Domain-Links austauschen (Subdomain-Wechsel)

WordPress speichert in den Posts die komplette URL. Sollte also eine Test-Installation (preview.domain.de) live gehen (www.domain.de), dann macht es Sinn, die Links auszutauschen. Bei einer Standardinstallation stehen die URLs in den Tabellen wp_posts, wp_options und wp_postmeta. Es gibt bei github (siehe unten) zwar fertige Scripte, aber als Hausmittel hier ein Dreizeiler:

mysqldump --add-drop-table -u username -pPASSWORD dbname wp_posts wp_options wp_postmeta > .dump.sql

sed -i 's/preview\.domain\.de/www.domain.de/g' .dump.sql

mysql -u username -pPASSWORD dbname < .dump.sql

Stichwort: Backup!

Um zu kontrollieren, ob sich bei den Plugin-Tabellen eine befindet, die mit geändert werden muss, kann natürlich erst mal der komplette Dump durchsucht werden:

mysqldump -u username -pPASSWORD dbname > .dump.sql
grep "preview\.domain\.de" .dump.sql

Der Punkt vor dem Namen verhindert, dass der Webserver diese Datei anzeigt - trotzdem die Ausgabedatei (.dump.sql) nachher löschen!

Wer keine Dumpfiles erzeugen will kann das ganze Procedere auf per mysql-Konsole/phpMyAdmin erledigen:

mysql> UPDATE wp_posts 
SET post_content=REPLACE(post_content,'www2.domain.de','www.domain.de'), 
guid=REPLACE(guid,'www2.domain.de','www.domain.de');

mysql> UPDATE wp_options 
SET option_value=REPLACE(option_value,'www2.domain.de','www.domain.de');

mysql> UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,'www2.domain.de','www.domain.de');

Urls der Search/Replace Scripts:

  • https://github.com/interconnectit/Search-Replace-DB
  • https://github.com/jmandala/searchreplacedb2