Het ingebouwde scherm voor verificatie van het admin-e-mailadres in WordPress — dat sinds versie 5.3 om de paar maanden verschijnt — verstoort Playwright-automatisering die plugins bijwerkt op sites zonder SSH-toegang. Deze extra stap dwingt scripts om te wachten op een knop die nooit verschijnt, wat leidt tot time-outs en vastgelopen implementaties.
Wat de vertraging veroorzaakt
Wanneer een Playwright-script inlogt op wp-admin, verwacht het dat het dashboard onmiddellijk wordt geladen. In plaats daarvan wordt de gebruiker soms door WordPress omgeleid naar een pagina waarvan de URL adminhash= bevat. De pagina vraagt: "Is dit nog steeds uw adres?" met twee knoppen: Ja, dit is mijn adres en Ik wacht wel. Een mens klikt op "Ik wacht wel" en gaat later verder; een onbeheerd script blijft zoeken naar de elementen van het dashboard, vindt ze nooit en loopt uiteindelijk vast door een time-out.
Waarom de melding bestaat
WordPress heeft deze melding toegevoegd om te bevestigen dat het admin-e-mailadres nog steeds bereikbaar is. De melding verschijnt ongeveer elke paar maanden, ongeacht de activiteit op de site, en is bedoeld als een beveiligingscontrole voor site-eigenaren die mogelijk de toegang tot het adres zijn verloren.
Wie wordt getroffen
- Ontwikkelaars die afhankelijk zijn van Playwright voor het pushen van plugin-updates, het uitvoeren van UI-tests of het uitvoeren van bulk-admin-taken.
- Hostingproviders die SSH beperken, waardoor gebruikers via de browser moeten automatiseren.
- Site-eigenaren die vertraagde updates zien omdat de automatisering het scherm voor updates nooit bereikt.
De kosten zijn niet alleen een paar verloren seconden; herhaalde mislukkingen kunnen geplande onderhoudsvensters stilleggen en handmatige interventie noodzakelijk maken.
Het ongewenste scherm detecteren
De aanwezigheid van adminhash= in de huidige URL is een betrouwbare indicator. De tekst verschijnt alleen op de e-mailverificatiepagina, niet op het reguliere dashboard of op andere admin-schermen.
Een eenvoudige bypass
Voeg direct na de inlogstap een controle toe. Als de URL adminhash= bevat, klik dan op de knop "Ik wacht wel" en wacht tot de pagina volledig is geladen voordat je verdergaat.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
Roep ensure_past_email_check(page) onmiddellijk na elke succesvolle login aan. De functie doet niets wanneer het verificatiescherm niet verschijnt, waardoor het script snel en voorspelbaar blijft.
Wanneer de bypass te gebruiken
Voor geautomatiseerde workflows die zonder menselijk toezicht moeten draaien — zoals nachtelijke plugin-updates of UI-tests voor continuous integration — is de bypass praktisch. Het behandelt de verificatiestap als een voorspelbare omweg in plaats van een willekeurige fout.
Tegenargument
Sommige beheerders voeren aan dat het automatisch afwijzen van de melding een echt probleem met de e-mailbezorging zou kunnen maskeren. Als het admin-e-mailadres daadwerkelijk onbereikbaar wordt, mist de site mogelijk kritieke meldingen. In dergelijke gevallen is een meer genuanceerde aanpak — zoals het loggen van het evenement, het verzenden van een waarschuwing of het pauzeren van de automatisering — wellicht wenselijker.
Waar je op moet letten
- WordPress kan het URL-patroon wijzigen of extra verificatiestappen toevoegen, wat de
adminhash=-controle zou verbreken. Houd de core release notes in de gaten. - De selector engine van Playwright evolueert; zorg ervoor dat de tekstselector
"text=I'll wait"na een UI-redesign nog steeds overeenkomt met de knop. - Als je veel sites beheert, overweeg dan om de bypass-logica te centraliseren in een gedeelde bibliotheek om dubbele code te voorkomen.
Door expliciet om te gaan met de bevestigingspagina voor het admin-e-mailadres, veranderen ontwikkelaars een incidentele time-out in een routineonderdeel van hun Playwright-scripts, waardoor WordPress-automatisering betrouwbaar blijft, zelfs wanneer het platform een onverwachte beveiligingsmelding geeft.
