WordPress media opruimen: mijn ontdekkingstocht

Tijdens mijn stage bij Monkeyproof kwam ik een interessant probleem tegen: de media-bibliotheek zat vol met ongebruikte afbeeldingen. Klant vroeg zich af of hier iets aan gedaan kon worden, en zo begon mijn zoektocht naar de beste manier om deze op te schonen. Wat in eerste instantie een simpele taak leek, bleek al snel een uitdaging met meerdere mogelijke oplossingen!


Hoeveel ongebruikte media-items zijn er?

Na een eerste analyse zag ik dat in de Nederlandse versie van de website 23.505 van de 52.015 media-items niet gekoppeld waren. In de andere talen lagen deze aantallen ongeveer gelijk.

Handmatig verwijderen zou onbegonnen werk zijn, dus ik ging op zoek naar efficiëntere methodes om de media op te schonen.


Mogelijke oplossingen

Ik heb verschillende methodes onderzocht en getest:

1. Handmatig via de WordPress Media Bibliotheek

WordPress biedt een filteroptie om ongebruikte afbeeldingen te vinden:
📌 Ga naar: Dashboard → Media → Niet gekoppeld

🔴 Probleem: Deze methode is niet 100% betrouwbaar. Sommige afbeeldingen worden als ongebruikt gemarkeerd, terwijl ze wél ergens op de site staan, bijvoorbeeld via een page builder of custom code.

2. Verwijderen via FTP of bestandsbeheer

Een brute-force methode is het direct verwijderen van bestanden via FTP of de hostingbestandsbeheerder.

📌 Bestandspad: /wp-content/uploads/JJJJ/MM/ (bijv. /wp-content/uploads/2023/06/).

🔴 Problemen:
❌ Grote kans op het per ongeluk verwijderen van gebruikte afbeeldingen.
❌ Links naar afbeeldingen op de website kunnen breken.
❌ Geen hersteloptie zonder back-up.

3. Gebruik van een plugin

Om het proces veiliger en eenvoudiger te maken, heb ik Media Cleaner en Media Hygiene getest. Deze plugins analyseren de database en tonen welke afbeeldingen waarschijnlijk niet meer gebruikt worden.

🟡 Probleem: Bij grote websites met veel media-items kan dit proces traag verlopen.

4. SQL-query voor veilige controle en verwijdering

Voor meer controle zocht ik naar een SQL-query die ongebruikte media detecteert:

SELECT p.ID, p.post_title, pm.meta_value
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id AND pm.meta_key = '_wp_attached_file'
LEFT JOIN wp_posts p2 ON p.ID = p2.post_parent
WHERE p.post_type = 'attachment'
AND p2.ID IS NULL
AND p.ID NOT IN (
SELECT DISTINCT meta_value
FROM wp_postmeta
WHERE meta_key IN ('_thumbnail_id', '_product_image_gallery')
);

🔹 Wat doet deze query? Dit geeft een lijst van ongebruikte afbeeldingen zonder ze direct te verwijderen.

🔴 Probleem: Toen ik deze query uitvoerde, bleek dat bij een grote hoeveelheid media-items de server te zwaar werd belast en het script eindeloos bleef draaien. Dit maakte deze methode onpraktisch en onveilig voor productiewebsites.


Vergelijking van de beste plugins: Media Cleaner vs. Media Hygiene

Omdat handmatige en SQL-methodes niet ideaal bleken, richtten we ons op plugins als oplossing. Hieronder een vergelijking tussen Media Cleaner Pro en Media Hygiene Pro:

1. Functies en prijs

KenmerkMedia Cleaner Pro ($39/jaar)Media Hygiene Pro ($24/jaar)
Media Library Scan✅ Ja✅ Ja
Bestanden detecteren en verwijderen✅ Ja✅ Ja
Live site scan✅ Ja❌ Nee
WP-CLI Support✅ Ja❌ Nee
WooCommerce-ondersteuning✅ Ja✅ Ja
Bulk downloaden/verwijderen❌ Nee✅ Ja

📌 Bronnen:

2. Positieve en negatieve punten

PositiefMedia CleanerMedia Hygiene
Effectieve opschoning✅ Goede herkenning en prullenbakfunctie✅ Identificeert ongebruikte bestanden
Gebruiksvriendelijk✅ Intuïtieve interface✅ Makkelijk te gebruiken
Veiligheid✅ Hersteloptie via prullenbak⚠️ Geen hersteloptie
NegatiefMedia CleanerMedia Hygiene
Compatibiliteit❌ Kan conflicteren met sommige plugins❌ Kan traag zijn op grote websites
Onjuiste detectie⚠️ Soms markeert het bestanden als ongebruikt terwijl ze nog nodig zijn⚠️ Idem
Beveiliging⚠️ Eerder kwetsbaarheden gehad (opgelost in updates)⚠️ Ook beveiligingsproblemen gehad (opgelost)

Uiteindelijk gekozen oplossing

Na onze testen hebben we Media Cleaner Pro en Media Hygiene Pro voorgesteld aan de klant als de meest betrouwbare oplossingen.

🔹 Waarom?
✔️ Andere methodes waren te tijdrovend of risicovol.
✔️ SQL-query’s belasten de server te veel.
✔️ Deze plugins bieden de beste balans tussen veiligheid en efficiëntie.
✔️ Media Cleaner heeft iets meer controle-opties en een hersteloptie, wat handig is bij grote websites.

Voor Euro-Joe, een webshop met veel inhoud en vertalingen, leek Media Cleaner de beste keuze.


Wat heb ik geleerd?

Deze zoektocht leerde me dat media opschonen in WordPress niet zo simpel is als het lijkt. Elke methode heeft voor- en nadelen, en het is belangrijk om de veiligste en meest efficiënte optie te kiezen.

💡 Belangrijke lessen:
✔️ Handmatig verwijderen is te foutgevoelig en tijdrovend.
✔️ FTP-verwijdering is gevaarlijk zonder herstelopties.
✔️ SQL-query’s kunnen de server overbelasten bij grote aantallen media-items.
✔️ Plugins bieden de beste balans tussen gemak en veiligheid.

Dit was weer een waardevolle ontdekkingstocht tijdens mijn stage, en ik ben blij dat we de klant een goed onderbouwde oplossing hebben kunnen bieden! 😊

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *