Van WordPress multisite naar afzonderlijke site

Van WordPress multisite naar afzonderlijke site

Van WordPress multisite naar afzonderlijke site 1920 1080 Thibault

Een WordPress multisite kan handig zijn in sommige situaties, maar vroeg of laat kan het voorkomen dat je websites zich steeds meer van elkaar gaan onderscheiden en zo de multisite ontgroeien. Het beste wat je dan kan doen, is om de multisite terug op te splitsen in afzonderlijke sites. Dat gaat helaas niet met een enkele klik, maar met onderstaand stappenplan is het zeker niet onmogelijk.

Toen we zelf voor de uitdaging stonden om een grote multisite op te splitsen in allemaal afzonderlijke sites, hebben we veel gehad aan de gids van Pressjitsu. Hun gids vormt dan ook de basis voor dit artikel, maar we vullen aan met onze eigen ervaringen en tips.

Voorbereidend werk

Net zoals bij elk groot project, is ook hier het voorbereidend werk een van de belangrijkste stappen. Volgende zaken heb je nodig:

Back-up

Het spreekt voor zich dat dit een grote taak is die je niet zomaar kan uitvoeren zonder je in te dekken voor eventuele fouten. Zorg dus voor een goede back-up, zowel van de bestanden (bijvoorbeeld de volledige public_html map op je server met de WordPress-bestanden en mediabestanden) als van de database.

Site ID

In een multisite heeft elke site een afzonderlijk ID. Neem even pen en papier en schrijf het ID op van elke site die je uit de multisite wil halen. Het ID kan je achterhalen door in je multisite te navigeren naar Network Admin -> Sites. Je krijgt nu een lijst van alle sites in je netwerk. Klik op een van de sites die je wil overschakelen naar een afzonderlijke installatie. In de adresbalk kan je nu het ID van de site zien.

Wordpress multisite sites

Database prefix

Wanneer je WordPress installeert, wordt er altijd een database prefix gebruikt. Deze zullen we later nodig hebben, dus het is verstandig om die nu reeds te achterhalen. Hiervoor dien je op je server het bestand wp-config.php te openen.

wordpress wp config database prefix

WordPress-map opbouwen

Op dit moment zit alles van onze multisite samen in één grote map. Het is de bedoeling dat we voor elke afzonderlijke site een eigen map maken die de gebruikte plugins, thema’s en mediabestanden bevat. De WordPress-bestanden hebben we niet nodig, want die zullen we straks downloaden.

Wp-content map maken

Maak op je computer een map wp-content aan. Deze zullen we in de volgende stappen vullen met bestanden die specifiek zijn voor de website die je wil overzetten.

Plugins overzetten

Maak in het wp-content mapje een nieuwe map plugins aan.Je zou alle plugins van de multisite kunnen kopiëren, maar logischer is om enkel de plugins over te zetten die ook effectief gebruikt worden. Navigeer dus even naar het WordPress dashboard van de over te zetten site en kijk welke plugins actief zijn. Kopieer vervolgens elke noodzakelijke plugin van de multisite naar het aangemaakte mapje.

mu-plugins

In de wp-content map van de multisite vind je ook het mapje mu-plugins, dit zijn de ‘must-use plugins’. Kopieer dit mapje integraal naar je nieuwe wp-content map.

index.php

In de map wp-content/plugins van je multisite, heb je ook een (leeg) bestand index.php, kopieer dit bestand ook integraal naar het nieuwe ‘plugins’ mapje. Dit zorgt ervoor dat er geen index van de mapbestanden kan worden opgevraagd door externe personen.

Ondertussen zou dit je mappenstructuur moeten zijn:

  • wp-content
    • plugins
      • een kopie van alle plugins uit de multisite die actief zijn op de site
      • een integrale kopie van het bestand wp-content/plugins/index.php op de multisite
    • mu-plugins
      • een integrale kopie van de mu-plugins op de multisite

Thema’s overzetten

Maak in het mapje wp-content een mapje themes aan. Plaats in dit mapje het gebruikte thema voor de site. Je map ziet er nu zo uit:

  • wp-content
    • plugins
    • mu-plugins
    • themes
      • een integrale kopie van het respectievelijke thema uit de multisite
      • een integrale kopie van wp-content/themes/index.php uit de multisite

Uploads

Elke website heeft ook zijn eigen mediabestanden (foto’s, documenten, video’s, etc). Ga in de multisite op zoek naar de map wp-content/uploads/sites. Je ziet nu verschillende mappen die corresponderen met de site ID’s. Open nu de map met het correspondere ID en kopieer alle mappen naar de nieuwe map wp-content/uploads. In je nieuwe map zal je dus geen gebruik meer maken van de map met een ID.

Uiteindelijk ziet je map er als volgt uit:

  • wp-content
    • plugins
    • mu-plugins
    • themes
    • uploads
      • een kopie van alle mappen uit wp-content/uploads/sites/x van de multisite waarbij x je site ID is

Eventuele andere bestanden

Mogelijk refereert je site naar bestanden die niet in een van deze mappen stonden, zoals bijvoorbeeld de root van de WordPress map. Indien dit zo is, dan zal je deze manueel moeten overzetten. In de meeste gevallen heb je aan de mappen ‘plugins’, ‘themes’ en ‘uploads’ al genoeg. Het is eerder uitzonderlijk dat er noodzakelijke bestanden in andere mappen staan.

In sommige gevallen staan er ook instellingen weggeschreven in je wp-config.php bestand die vereist zijn voor sommige plugins. Indien dit bij jou het geval is, kopieer deze instellingen dan en plak ze ergens in een kladblok. Je zal deze instellingen straks terug moeten plakken in het configuratiebestand van je nieuwe WordPress-installatie. Kopieer enkel de vereiste regels, niets anders van het wp-config bestand.

De database splitsen

In een multisite is er maar één database voor alle sites. Wij willen onze multisite opsplitsen, dus we zullen ook de database moeten opsplitsen. Concreet zal je alle tabellen moeten exporteren die het site ID als prefix hebben. Onze site heeft ID 15, dus wij hebben alle tabellen nodig die beginnen met ym_15_. Daarnaast zal je ook de tabellen wp_users en wp_usermeta nodig hebben.

Database exporteren

Hoe je deze tabellen exporteert is afhankelijk van jouw gebruikelijke manier van werken. Gebruik je PHPMyAdmin, een SQL client op je computer of rechtstreeks via een terminal-venster. Wij kiezen om het rechtstreeks op de server uit te voeren via SSH.

SQL statement herschrijven

Na het uitvoeren van bovenstaande stap, zou je een .sql dump moeten hebben met daarin een export van alle tabellen. Alvorens we de database straks gaan importeren in een nieuwe database, dienen we het SQL statement dat we hebben aangemaakt in de vorige stap wat te herschrijven. Open het sql-bestand dus in een text editor.

Zoek in je bestand ym_users (in jouw geval zal het uiteraard een andere prefix en ander id zijn) en vervang dit door ym_15_users. Doe hetzelfde voor ym_usermeta. Door deze aanpassingen krijgen alle tabellen straks dezelfde prefixen. Je hoort het al, ons prefix voor de nieuwe WordPress installatie wordt ym_15.

Ben je klaar met bovenstaande wijzigen, sla dan het .sql-bestand op. In een latere stap zullen we dit importeren in onze nieuwe database.

Nieuwe WordPress installatie uitvoeren

We gaan nu een volledig verse WordPress-installatie uitvoeren.

Database aanmaken

Maak een nieuwe database aan voor je WordPress site. Opnieuw, je werkwijze zal afhankelijk zijn van jouw persoonlijke voorkeur (en kennis). Dit kan via PHPMyAdmin, een SQL client of simpelweg via Linux commands op je server.

WordPress bestanden kopiëren

Ga naar de officiële WordPress-site en download de bestanden. Plaats deze op je server in de juiste map (bijvoorbeeld in een afzonderlijke vhost) en start de installatie door naar de site te surfen. Let wel, je zal er eerst nog voor moeten zorgen dat je domeinnaam niet meer naar de multisite verwijst, maar wel naar je eigen afzonderlijke website. Dit kan je bijvoorbeeld doen door de Document Root van het vhost configuratiebestand aan te passen, maar dat valt buiten het bestek van deze tutorial.

LET OP: bij de installatie van WordPress is het belangrijk dat je meteen ook de goede prefix doorgeeft.

Overschrijven met samengestelde wp-content map

Herinner je je nog de wp-content map die we eerder in deze tutorial hebben aangemaakt? Nu de verse WordPress-installatie voltooid is, is het tijd om de standaard wp-content map te overschrijven met onze eigen samengestelde map. Dit zorgt ervoor dat de thema’s, plugins en uploads worden overgezet naar onze nieuwe site.

Database importeren

De laatste stap is het importeren van de volledige database. Alle posts, users, instellingen, plugin configuraties en meer worden zo overgezet. Importeren doe je opnieuw op je eigen manier. Of je het nu doet via PHPMyAdmin of via SSH, via alle manieren is dit een behoorlijk eenvoudige stap die voor niet veel problemen zou mogen zorgen. Wanneer de database geïmporteerd is, zal je op je website kunnen inloggen met hetzelfde account dat je gebruikte op de multisite.

Overschrijven van upload-paden

Wanneer je nu de website bezoekt, merk je dat de mediabestanden niet werken. Dit komt omdat achterliggend de links nog steeds wijzen naar /wp-content/uploads/sites/x in plaats van /wp-content/uploads. Via een plugin zoals Better Search Replace overschrijf je eenvoudig de paden, zodat deze kloppen voor de site. Na het uitvoeren van deze stap, zouden alle afbeeldingen en andere mediabestanden op je website terug moeten werken.

better search replace
Met een plugin zoals Better Search Replace overschrijf je makkelijk de paden.

Puntjes op de i

Je website is nu nagenoeg afgewerkt, maar het loont de moeite om even je lijst met plugins te controleren. Zijn de vereiste plugins geactiveerd en – belangrijker – heb je geen plugins staan die je eigenlijk niet nodig hebt? Streef ernaar om zo weinig mogelijk plugins op je website te hebben. Controleer ook even de gebruikers. Je website bevat namelijk alle users van je multisite, maar mogelijk is dit niet (meer) vereist. Verwijder dus alle gebruikers die niet nodig zijn, of controleer tenminste of er niemand onnodige rechten heeft.

Werkt alles goed, dan kan je nog één keer naar je multisite gaan, maar deze keer om de overgezette website te verwijderen. Dit doe je via My Sites > Network Admin > Sites. Voel je je nog niet veilig bij de gedachte om de site te verwijderen, dan kan je deze gewoon eerst deactiveren en na een bepaalde tijd handmatig verwijderen. Zo weet je zeker dat alles goed werkt.


Hulp nodig?

Lukt het je niet goed of wil je dergelijke WordPress-taakjes liever uitbesteden? We helpen je er graag bij!

Laat een reactie achter