WordPress wordt aangedreven door een MySQL database. MySQL is een gratis ‘relationele database management systeem‘ die door de meeste web hosting diensten wordt gebruikt in combinatie met CMS blogging platformen. Alle WordPress gegevens, zoals de berichten, commentaren, categorieën en instellingen worden opgeslagen in de MySQL database.
Als je informatie over de hele linie wilt wijzigen in WordPress, bijvoorbeeld vanwege het verhuizen naar een andere URL (Uniform Resource Locator), dan zal het handmatig aanpassen van elke record zeer tijdrovend én gevoelig voor menselijke (typ)fouten zijn.
Door gebruik te maken van een MySQL query in de WordPress database, kun je de benodigde wijzigingen snel en efficiënt doorvoeren. Hieronder staan een aantal zeer handige MySQL queries die van grote hulp voor jou kunnen zijn.
Maar eerst, .. het juiste Gereedschap!
Een gemakkelijke manier om een van de onderstaande MySQL queries uit te voeren, is door gebruik te maken van phpMyAdmin. phpMyAdmin is een van de meest voorkomende databank ‘look-up en editing tools’. Bijna alle bedieningspanelen van web hosting services bieden deze dan ook aan.
Maar er zijn ook een aantal WordPress plugins zoals bijv. WordPress SQL Executioner –een WordPress plugin waar MySQL query mee uitgevoerd kunnen worden.
Verander de Site URL en Homepage URL
WordPress slaat het absolute pad van de site-URL en van de homepage-URL op in de database (een absolute pad wordt gezien vanaf de root van de website). Deze MySQL query is uiterst handig als je jouw site wilt migreren van een oud domein naar een nieuw domein, of van een oud sub-domein naar een nieuwe .. etc.
Ook erg handig als je de site off-line heeft ontworpen en gecodeerd (bijv. op een localhost met Wamp), en je wilt jouw WordPress site van de localhost naar je server migreren.
Zonder deze MySQL query te gebruiken zou jouw website niet werken op een nieuw domein, omdat het absolute pad nog steeds verwijst naar het oude domein of de localhost.
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://www.oude_site.nl', 'https://www.nieuwe_site.nl');
Updaten URL’s in de Post Meta
Updaten van de Post Meta werkt bijna op dezelfde manier als het updaten van de URL in de post inhoud. Post Meta data is de “administratieve” informatie behorend bij elk bericht. Deze informatie omvat meestal de auteur van het artikel, datum van de publicatie, de categorie en tags toegekend aan het artikel, etc.
Als je extra URL data voor elke post hebt opgeslagen, kun je deze MySQL query gebruiken om ze allemaal te veranderen.
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'https://www.oude_site.nl', 'https://www.nieuwe_site.nl');
Verander de URL’s in de inhoud
WordPress maakt overal gebruik van absolute paden in URL-koppelingen, in plaats van relatieve paden (een relatief pad beschrijft de locatie van het gekoppelde bestand in relatie tot de locatie van jouw WordPress Theme). In de inhoud van elk bericht, staan dus nog de oude (interne) verwijzingen naar andere artikelen of gebruikte afbeeldingen. Daarom moet je al deze URL’s ook veranderen naar het nieuwe domein.
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://www.oude_site.nl', 'https://www.nieuwe_site.nl');
Verander de GUID (Globally Unique Identifier)
Nadat je jouw blog heeft gemigreerd van de localhost naar je server of van een oud domein naar een nieuwe, moet je ook de URL’s voor het veld GUID veranderen in de wp_posts tabel.
Dit is cruciaal omdat GUID wordt gebruikt om jouw post of pagina slug (slugs worden gebruikt in de ‘permalinks’ structuur van WordPress) te vertalen naar het juiste absolute pad voor een artikel of pagina als het verkeerd wordt ingevoerd.
UPDATE wp_posts SET guid = REPLACE(guid, 'https://www.oude_site.nl', 'https://www.nieuwe_site.nl');
Ongebruikte Post Meta’s verwijderen
Het installeren of verwijderen van plugins is een veel voorkomende taak in WordPress. Echter, sommige plugins maken gebruik van de post meta om gegevens met betrekking tot de plugin op te slaan. Nadat je de plugin hebt verwijderd, kunnen deze gegevens –die niet langer nodig zijn– nog achterblijven in de post_meta tabel.
Voer de volgende MySQL query uit om deze ongebruikte post-meta waardes op te ruimen. Dit zal helpen om de snelheid te verbeteren en de grootte van jouw database te optimaliseren.
DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key'
Verwijder oude Revisies
Wanneer je een artikel in WordPress aan het bewerken bent, zullen er vele automatische kopieën (revisies) worden opgeslagen. Dit is uiteraard handig mocht jouw browser of computer crashen, zodat je een recente backup achter de hand heeft. Na verloop van tijd echter, na het publiceren van een aantal tientallen artikelen of pagina’s, zal de grootte van de database aanzienlijk zijn toegenomen door deze backups.
Dit kan onnodige ‘loops’ veroorzaken (automatische herhalende processen, zoals bijv. berekeningen of ophalen van gegevens uit de database) en zal de laadtijd van de pagina negatief beïnvloeden.
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'
Indentificeer ongebruikte Tags
In een WordPress-database –als je een MySQL query uitvoert om oude berichten handmatig uit je database te verwijderen– zullen de oude Tags van een artikel opgeslagen blijven en daardoor in jouw Tag cloud of lijst blijven terugkomen. Met deze MySQL query kun je de niet-gebruikte tags identificeren om deze vervolgens handmatig te verwijderen uit de database.
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
Bottomline
Als je wat onderhoud moet doen aan jouw WordPress database en de boel wilt optimaliseren of je wilt een WordPress site migreren naar een ander domein, dan zijn bovenstaande MySQL queries enorm nuttig om het process te versnellen.
Wil je zo ver mogelijk vandaan blijven van deze query’s voor je database, adviseer ik jou om eens een kijkje te nemen naar de volgende 2 (premium!) plugins. WP Migrate DB Pro maakt het super eenvoudig om je site te migreren naar een nieuwe URL. BackupBuddy is ook een uitstekende plugin als het gaat om op het opslaan van een kopie van jouw gehele database!
Uiteraard kun je ook contact met mij opnemen als je er niet uitkomt, samen kunnen we dan kijken wat de beste methode is om jouw database te onderhouden en bij te werken.
Dag Jan, ik probeer een online website te klonen naar XAMPP en heb daarvoor gebruik gemaakt van een aantal van door jou gegeven queries. Er zijn nog wat problemen mee en daarvoor heb ik hulp gevraagd op WordPress Support maar nog geen reacties gekregen. Misschien wil jij daar ook eens naar kijken? Alvast bedankt.
https://nl.wordpress.org/support/topic/clone-op-xampp/
Hoi Han,
Ik heb je bericht gelezen op de WP Support .. maar, heb je wel de juiste gegevens ingevuld bij de verschillende queries? Dus bijv. in de regel:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://www.oude_site.nl', 'http://www.nieuwe_site.nl');
zijn er een aantal dingen die correct moeten worden ingevuld. In bovenstaande regel moet je de table prefix (hier:wp_
) vervangen door de table prefix van jouw db.Verder dien je ook de juiste sitenamen te veranderen, in jouw geval wordt de oude site ‘
http://ruilkringdelftwestland.nl
‘en de nieuwe site wordt ‘http://localhost/Delft
‘. Als je deze query in myPHPadmin invult zou het moeten werken ..?Verder zijn de permalinks correct ingesteld in je dashboard van je WP en in je .htaccess? Soms werkt het ook als je in de localhost de permalinks insteld op ‘standaard’, dan kun je na migratie de site weer op een andere permalink instellen.
Hopelijk lukt het je nu wel .. keep me posted! Suk6!
Dag Jan, het probleem is opgelost door ‘regenerate .htaccess’: permalinks instellinge opnieuw saven. Daarna nog één menu item aanpassen: Home opnieuw aanmaken en de oude verwijderen. Toch bedankt..
Dag Jan, ik zie je antwoord nu pas nadat ik een nieuw bericht had ingestuurd. Ik had niet gerekend op zo’n snel antwoord van je en ben gaan doorzoeken. Bovenstaande oplossing gevonden met elementen die je ook al in je antwoord hebt gegeven. Ik verwachtte misschien een mailtje met de vermelding dat je antwoord had gegeven maar dat heb ik niet ontvangen. Misschien kun je daar iets mee.
Hi Han,
ja, .. snel ben ik hé ;-P
Maar idd. de permalinks instellingen kunnen soms een beetje hardnekkig zijn op een localhost (vandaar de opmerking om deze gewoon op standaard te zetten). Maar als je permalinks het niet doen, dan is de .htaccess en je instellingen goede plaatsen om te onderzoeken! Blij dat je probleem is opgelost!
Hmmm, wel raar dat je inderdaad geen notification hebt gekregen van mijn eerste reactie? Daar duik ik dan wel weer in! Ciao!