Trygg opprydding i WordPress-databasen via phpMyAdmin
🎯 Formål:
Fjerne foreldreløse (ubrukte) data fra databasen – typisk metadata som ligger igjen etter at innlegg, sider eller custom post types (CPT) er slettet. Dette frigjør plass, gir bedre ytelse og renere database – uten å påvirke det som fortsatt er i bruk.
🔧 Verktøy: phpMyAdmin
Tilgjengelig fra kontrollpanelet hos de fleste webhoteller (f.eks. Hostinger, cPanel, eller DirectAdmin).
🧽 Funksjon 1: Slett foreldreløse postmeta
-data (trygg rydding)
🔢 SQL-kode:
sqlKopierRedigerDELETE FROM wp_postmeta
WHERE post_id NOT IN (SELECT ID FROM wp_posts);
📝 Forklaring:
Denne kommandoen sletter metadata (som feltverdier, ACF-informasjon, WooCommerce-innstillinger, etc.) som ikke lenger tilhører noen post. Det gjelder kun data i wp_postmeta
, altså data knyttet til slettede innlegg eller custom post types.
✅ Denne funksjonen gjør:
- Sletter metadata som ikke lenger er tilknyttet en post
- Rydder etter slettede innlegg, sider, produkter eller kontakter
- Fjerner unødvendig «søppel» som tar opp plass i databasen
❌ Denne funksjonen gjør ikke:
- Den sletter ikke innlegg, sider, CPT-er eller noen synlig innhold
- Den sletter ikke brukere eller informasjon fra
wp_users
/wp_usermeta
- Den fjerner ikke feltgrupper eller definisjoner fra ACF eller plugins
- Den sletter ikke taksonomier, kategorier eller merkelapper
👷♀️ Hvem kan bruke dette?
Alle som har admin-tilgang til phpMyAdmin og ønsker å rydde trygt i databasen, spesielt etter at custom post types er slettet manuelt fra WP-admin.
🧩 Forslag til flere nyttige SQL-oppryddingsfunksjoner
🧹 Funksjon 2: Slett foreldreløse term
-relasjoner (kategorier/merkelapper)
sqlKopierRedigerDELETE FROM wp_term_relationships
WHERE object_id NOT IN (SELECT ID FROM wp_posts);
✅ Bruk når:
Du har slettet innlegg eller CPT-er, men merkelapper og kategorikoblinger ligger igjen.
🧹 Funksjon 3: Slett foreldreløse termmeta
sqlKopierRedigerDELETE FROM wp_termmeta
WHERE term_id NOT IN (SELECT term_id FROM wp_term_taxonomy);
✅ Bruk når:
Du har slettet taksonomier eller merkelapper, men metadata ligger igjen (brukes f.eks. av plugins som legger til ekstra felt i kategorier).
🧹 Funksjon 4: Slett foreldreløse commentmeta
sqlKopierRedigerDELETE FROM wp_commentmeta
WHERE comment_id NOT IN (SELECT comment_ID FROM wp_comments);
✅ Bruk når:
Du har slettet kommentarer, men tilhørende metadata ikke er ryddet bort.
🧹 Funksjon 5: Slett foreldreløse comments
(ekstra sikkerhet)
sqlKopierRedigerDELETE FROM wp_comments
WHERE comment_post_ID NOT IN (SELECT ID FROM wp_posts);
✅ Bruk når:
Du har slettet innlegg, men kommentarene til dem fortsatt ligger igjen.
🛑 Viktige forholdsregler
- 📦 Ta alltid backup før du kjører SQL direkte mot databasen
- ✅ Bruk alltid phpMyAdmin eller et tilsvarende kontrollert miljø
- 💡 Ikke kjør disse kommandoene med mindre du vet hva postene er
- 🔍 Du kan først teste med
SELECT * FROM ...
i stedet forDELETE FROM ...
for å se hvilke rader som blir påvirket
📘 Anbefalt verktøy ved manuell rydding:
- ✅ Advanced Database Cleaner – Skanner og viser orphaned data
- ✅ WP Optimize – Brukervennlig verktøy for daglig vedlikehold
- ✅ Query Monitor – Viser hva som faktisk brukes i databasen ved lasting av sider
💡 Tips: Sletting av spesifikke Custom Post Types
Dersom du ønsker å slette alt innhold i en bestemt CPT:
sqlKopierRedigerDELETE FROM wp_posts WHERE post_type = 'kontaktprofiler';
📌 Bytt ut
kontaktprofiler
med ønsket post type-navn.
Dette fjerner alle innlegg i den CPT-en, men ikke strukturen eller feltene i ACF.
🚀 Bonus: Full ACF-reset av data (valgfritt)
Hvis du vil rydde alle ACF-data (f.eks. ved migrering), kan du utvide med:
sqlKopierRedigerDELETE FROM wp_postmeta WHERE meta_key LIKE 'field_%';
DELETE FROM wp_postmeta WHERE meta_key LIKE '_field_%';
⚠️ NB! Dette sletter alle ACF-tilknyttede data, også de som er i bruk. Bruk kun hvis du skal bygge alt på nytt.