Sinds vorige week doet de reserveringsknop het niet meer. Of de slider staat stil. Of het opslaan van een pagina eindigt in een foutmelding die niets uitlegt. De site is niet plat, hij doet alleen op één plek iets raars. En u heeft niets veranderd, behalve dat er dinsdag een paar updates zijn geïnstalleerd.
Dit is het klassieke beeld van een plugin conflict in WordPress: twee stukken code die elk apart prima werken, maar samen elkaar in de weg zitten. Het standaardadvies op internet is “schakel alle plugins uit en zet ze één voor één weer aan”. Op een live website met bezoekers is dat geen prettige gedachte. Gelukkig kan het slimmer.
Waarom plugins met elkaar botsen
Plugins delen dezelfde ruimte. Ze laden allemaal hun eigen JavaScript en CSS in dezelfde pagina, haken in op dezelfde WordPress-functies, en schrijven soms naar dezelfde instellingen. Meestal gaat dat goed, omdat WordPress daar spelregels voor heeft. Het gaat mis als twee plugins dezelfde bibliotheek in verschillende versies laden, allebei hetzelfde element op de pagina willen aansturen, of een van beide bij een update een werkwijze verandert waar de ander op leunde.
Daarom duikt een conflict bijna altijd op na een update: van een van de plugins, van het thema, van WordPress zelf, of van de PHP-versie op de server. Het is dus goed om te noteren wat er de afgelopen dagen is bijgewerkt. Vaak staat het antwoord daar al.
Stap 1: verzamel aanwijzingen voordat u iets uitzet
Een paar minuten kijken bespaart vaak een uur uitzetten en aanzetten.
- Sitegezondheid. Ga naar Hulpmiddelen → Sitegezondheid. Meldingen over een plugin die verouderd is, een PHP-versie die niet wordt ondersteund of een ontbrekende module wijzen soms direct naar de oorzaak.
- De browserconsole. Open de pagina waar het misgaat, druk op F12 en kijk onder Console. Rode foutmeldingen in JavaScript noemen vaak een bestandspad, en dat pad bevat de naam van de pluginmap. Dat is de eerste verdachte.
- Het foutenlog. Zet tijdelijk het loggen aan (WP_DEBUG_LOG in wp-config.php) en herhaal de handeling die misgaat. In het logbestand onder wp-content staat dan meestal welk bestand de fout veroorzaakt. Hoe dat werkt staat in onze uitleg over de debug-modus.
- De updategeschiedenis. Onder Dashboard → Updates of in de logfunctie van uw onderhoudspartij ziet u wat er recent is bijgewerkt.
Regelmatig is de zaak na deze stap al rond en hoeft u alleen die ene plugin tijdelijk uit te schakelen of terug te zetten naar de vorige versie.
Stap 2: test op een kopie, niet op de live site
Blijft het onduidelijk, dan wilt u plugins gaan uitschakelen. Doe dat op een staging-omgeving: een kopie van de site die bezoekers niet zien. Veel hostingpartijen bieden daar een knop voor; anders maakt u een kopie met een plugin als WP Staging of Duplicator. Op die kopie kunt u alles uitzetten wat u wilt, zonder dat een klant midden in een bestelling een kale site ziet.
Heeft u geen staging en wilt u toch op de live site testen, gebruik dan de plugin Health Check & Troubleshooting van het WordPress-team. Die heeft een probleemoplossingsmodus waarin alle plugins alleen voor u worden uitgeschakeld en het standaardthema alleen voor u wordt geladen, terwijl bezoekers de gewone site blijven zien. U schakelt de plugins daarna één voor één weer in, opnieuw alleen voor uzelf. Het is de veiligste manier om op een live site te zoeken.
Stap 3: de halveringsmethode
Met dertig plugins hoeft u er niet dertig keer een aan te zetten. Werk in helften:
- Schakel de helft van de plugins uit. Werkt het probleem nog? Dan zit de schuldige in de andere helft.
- Zet de goede helft weer aan en schakel van de verdachte helft opnieuw de helft uit.
- Herhaal tot er één plugin overblijft. Bij dertig plugins bent u in vijf rondes klaar.
Test na elke ronde precies de handeling die misging, en leeg tussendoor de cache. Een cacheplugin kan een oude versie van de pagina tonen en u op het verkeerde been zetten. Schakel bij twijfel de cacheplugin als allereerste uit.
Vergeet het thema niet. Wissel tijdelijk naar een standaardthema van WordPress (Twenty Twenty-Four bijvoorbeeld). Verdwijnt het probleem, dan is het geen pluginconflict maar een thema dat botst met een plugin, en zoekt u verder in de themacode of bij de themaleverancier.
Stap 4: het conflict oplossen
Zodra u de twee betrokken plugins kent, heeft u een paar mogelijkheden, in volgorde van voorkeur:
- Controleer op een update. Vaak is het conflict bij de ontwikkelaar al bekend en in een nieuwere versie verholpen. Kijk ook in het supportforum van de plugin op wordpress.org; zoek op de naam van de andere plugin.
- Pas een instelling aan. Veel conflicten zitten in optimalisatie-instellingen: JavaScript uitstellen, CSS samenvoegen, lazy loading. Sluit de betrokken plugin uit van die optimalisatie.
- Zet één plugin terug naar de vorige versie, met een plugin als WP Rollback, en wacht op een fix. Doe dat niet met beveiligingsupdates.
- Vervang een van de twee. Als de plugins allebei ongeveer hetzelfde doen (twee SEO-plugins, twee cacheplugins, twee formulierplugins), is dat de duurzame oplossing.
- Meld het bij de ontwikkelaar, met de versienummers en de foutmelding uit het log. Serieuze ontwikkelaars lossen zulke meldingen snel op.
Wanneer u hulp inschakelt
Zelf zoeken is prima als de site nog werkt en het om één functie gaat. Schakel hulp in als de site bij het uitschakelen van een plugin helemaal onbereikbaar wordt, als het foutenlog naar bestanden wijst die u niet begrijpt, of als het probleem zich alleen bij bezoekers voordoet en niet bij u. Een bugfixingdienst voor WordPress zoekt zo’n conflict met een profiler en een staging-kopie meestal binnen een uur uit, inclusief een advies over wat u met de plugins doet.
Een voorbeeld: bij een restaurant in Maastricht viel het reserveringsformulier stil na een update van de cacheplugin. De console wees naar een JavaScript-bestand van het reserveringssysteem dat door de nieuwe versie van de cacheplugin werd uitgesteld. Eén uitzondering toevoegen in de cache-instellingen en het werkte weer. Zoektijd: een kwartier. Zonder de console: een avond.
Conclusie
Een pluginconflict vindt u niet door blind uit te zetten, maar door eerst te kijken: Sitegezondheid, de browserconsole, het foutenlog en de updategeschiedenis. Moet u toch uitschakelen, doe dat dan op een staging-kopie of met de probleemoplossingsmodus van Health Check, en werk in helften. Los daarna het conflict op met een update, een instelling of een vervanging, en noteer wat u heeft gevonden. De volgende update komt gegarandeerd.


