Je site verplaatsen naar een ander domein

Er zijn zelfs ervaren ontwikkelaars die een harde ‘search & replace’ uitvoeren op een database(dump) wanneer zij een WordPress installatie van het ene naar het andere domein verhuizen. Soms gaat dat goed. Maar het gaat beslist fout als de lengte van de oude en nieuwe domeinnamen van elkaar verschillen. Waarom die ontwikkelaars dat niet weten? Vermoedelijk omdat ze nooit de moeite hebben genomen uit te zoeken waarom hun widgets of plugins plots niet meer werken na de verhuizing. Ze stellen ze opnieuw in en daarmee is de kous af. Maar dat levert extra werk en kans op fouten op en dat voorkomen we natuurlijk liever!

Serialized data

De oorzaak voor deze problemen schuilt in het feit dat WordPress met name ‘options’ in de ‘options table’ opslaat als ‘serialized data‘, een formaat met variabele lengte, waarbij de lengte van de strings hard-coded wordt opgenomen. Wanneer je nu in zo een string ‘domeinnaam-x’ vervangt door ‘langere-domeinnaam’ terwijl je niet de hard-coded string-lengte aanpast, dan…  meer hoef ik niet te schrijven, he…?! 🙂

Script

Je kunt alle problemen eenvoudig voor zijn door gebruik te maken van een script dat rekening houdt met het serialized data formaat. Ik gebruik hier al jaren Search-Replace-DB voor.

Ga als volgt te werk:

  • installeer WordPress als gebruikelijk
  • laadt de gekopieerde database op het nieuwe domein
  • pas in de ‘options table’ de home en site url’s met de hand aan via PhpMyAdmin.
  • plaats het search-replace script in de root van je site en voer het uit.

En klaar is Kees! Geen problemen meer met widgets en plugins na een verhuizing!

WordPress MultiSite

Je kunt het script ook voor een multisite database gebruiken. Echter, het volstaat niet om alleen de ‘options table’ aan te passen; je zult meer tabellen met de hand moeten aanpassen. Daar zal ik in de toekomst een afzonderlijk artikeltje aan besteden.