Wachtwoord reset werkt niet in WordPress

Je klikt op Wachtwoord vergeten en er gebeurt niks bruikbaars. Dit artikel legt uit hoe de WordPress wachtwoord-reset eigenlijk werkt, welke vier oorzaken hem laten falen, en hoe je herkent welke van die vier bij jou speelt voordat je tijd verspilt aan de verkeerde fix.

Als mensen zeggen dat de WordPress wachtwoord-reset het niet doet, bedoelen ze zelden hetzelfde. Soms komt de mail nooit aan. Soms komt hij wel, maar zegt de pagina dat de link ongeldig is. Soms sta je gewoon weer op het inlogscherm. Van buiten lijken die problemen identiek, en de fixes zijn totaal verschillend. Dit artikel is het denkkader: hoe het resetproces werkt, de vier oorzaken die het breken, en hoe je herkent welke bij jou speelt.

Hoe de WordPress wachtwoord-reset eigenlijk werkt

De reset is een pijplijn van vier stappen. Vrijwel elk "het werkt niet"-verhaal valt in één van die stappen.

  1. Je vraagt een reset aan. Het verzenden van het "Wachtwoord vergeten?"-formulier post naar wp-login.php?action=lostpassword, wat de functie retrieve_password() aanroept. WordPress zoekt het account op via gebruikersnaam of e-mailadres en geeft een WP_Error terug als er geen match is.
  2. WordPress maakt een resetsleutel. Bij een succesvolle lookup maakt get_password_reset_key() een gehasht token aan en zet dat in de kolom user_activation_key op wp_users. Datzelfde token wordt verwerkt in een URL als wp-login.php?action=rp&key=...&login=....
  3. WordPress verstuurt de mail. De functie geeft het bericht door aan wp_mail(), een wrapper rond PHP's mailer. Vanaf dat moment is de mail geen WordPress-probleem meer maar een afleverkwestie. Als de host uitgaande mail blokkeert of het domein heeft geen SPF of DKIM, dan komt de mail simpelweg niet aan.
  4. Je klikt de link en stelt een nieuw wachtwoord in. WordPress checkt de sleutel tegen user_activation_key en tegen het filter password_reset_expiration, dat standaard DAY_IN_SECONDS (24 uur) is. Als de sleutel klopt en nog vers is, mag je een nieuw wachtwoord kiezen. Als hij ontbreekt, niet matcht of verlopen is, krijg je "Je wachtwoord-reset link lijkt ongeldig. Vraag hieronder een nieuwe link aan."

Elke storing die ik hieronder bespreek breekt op precies één van die vier stappen.

De vier redenen dat de wachtwoord-reset faalt

1. De mail komt nooit aan (veruit de meest voorkomende oorzaak)

Stappen 1 en 2 lukken gewoon. WordPress vindt de gebruiker, maakt een sleutel, geeft het bericht aan wp_mail(), en wp_mail() meldt succes. Alleen komt de mail nooit in de inbox aan.

Dit is met afstand de meest voorkomende oorzaak. WordPress duwt mail standaard via PHP's mail()-functie naar buiten. Op shared hosting betekent dat: vertrek vanaf een server zonder afzenderreputatie, zonder SPF of DKIM, zonder DMARC-uitlijning op jouw domein. Gmail, Outlook en Hotmail dumpen zulke berichten stilletjes. De fix zit dus niet in de loginstroom maar in de mailaflevering. Lees WordPress verstuurt geen e-mail voor het diagnosepad en de SMTP-relay-setup die wp_mail() vervangt.

De mail is aangekomen, je klikt de link, en WordPress meldt "Je wachtwoord-reset link lijkt ongeldig". De oorzaak zit op stap 4: de sleutel in de URL matcht niet meer met user_activation_key voor die gebruiker. Daar zijn twee manieren voor.

De eerste is verloop. De standaardlevensduur is 24 uur, gezet via het filter password_reset_expiration. Als je gisteren een reset hebt aangevraagd en de mail pas vandaag opent, is de sleutel weg. Vraag een nieuwe aan en gebruik die in dezelfde sessie.

De tweede is hergebruik. WordPress wist user_activation_key zodra een reset slaagt, en elke nieuwe "Wachtwoord vergeten?"-aanvraag overschrijft de vorige sleutel ook. Heb je twee keer achter elkaar op "Wachtwoord vergeten" geklikt, dan werkt alleen de meest recente link nog.

WordPress bouwt de link in de mail uit WP_HOME (of de optie home in de database als WP_HOME niet in wp-config.php staat). Als die waarden niet matchen met het domein dat bezoekers gebruiken, wijst de link in de mail naar de verkeerde plek. Je krijgt een 404, een andere site, of een verbindingsfout.

Ik zie dit het vaakst na een domeinmigratie, na een HTTPS-uitrol waarbij de optie nog op http:// bleef staan, of bij een multisite met gemapte domeinen. De check is snel: open wp-config.php en zoek WP_HOME. Staat hij er niet, kijk dan naar de optie home in de database. Beide moeten matchen met de URL die je echt serveert, inclusief het schema en wel of geen www.. Diezelfde scheefstand veroorzaakt ook de WordPress login redirect loop, dus zie je het ene symptoom, dan zie je meestal ook het andere.

4. Het account hangt aan een ander e-mailadres dan je denkt

WordPress slaat per gebruiker één e-mailadres op, in de kolom user_email. Daar gaat de resetmail heen, niet naar het adres dat jij nu toevallig gebruikt. Is het account jaren geleden aangemaakt met een oud werkadres, of gemigreerd uit een ander systeem, dan stuurt "Wachtwoord vergeten" de link naar dat oude adres. Vanuit jouw inbox: niks te zien. Vanuit WordPress: alles is goed gegaan.

Check je gebruikersrecord in de tabel wp_users op user_email, of vraag een andere admin op de site om dat voor je te doen. Gaat de link naar een adres dat jij niet meer onder controle hebt, dan kan een admin het e-mailveld direct bijwerken en daarna een verse reset triggeren.

Wat wachtwoord reset werkt niet NIET is

Dit is de sectie die de meeste verspilde tijd voorkomt. De "Wachtwoord vergeten"-stroom lijkt op een loginprobleem, maar de meeste dingen waar mensen het mee verwarren zijn dat helemaal niet.

  • Het is geen cookie- of sessieprobleem. Cookieproblemen breken het inlogformulier zelf, niet de resetmail. Komt de mail wel aan en werkt de link, maar blijf je daarna niet ingelogd? Dan zit je in een ander probleem. Lees cookies zijn geblokkeerd of niet ondersteund in WordPress.
  • Het is geen serveruitval. Als wp-login.php überhaupt laadt in je browser, dan is de server bereikbaar en draait WordPress gewoon. Een mislukte reset is een logisch probleem in een verder werkende site, geen storing.
  • Het is geen geblokkeerd of geband account. WordPress laat een duidelijke foutmelding zien als je account vergrendeld is door een securityplugin of tegengehouden wordt door een brute-force-shield. Een geblokkeerd account slikt je resetverzoek niet stilletjes weg, het zegt het tegen je. Zie je helemaal geen foutmelding, dan is een blokkade niet jouw probleem.
  • Het is niet hetzelfde als "ik kan niet inloggen". "Niet kunnen inloggen" is de paraplu voor alles wat misgaat op het inlogscherm: cookies, rechten, redirects, het hele rijtje. Wachtwoord reset werkt niet is één specifieke storing daarbinnen: het herstelpad dat je had moeten redden toen je je wachtwoord vergat. Behandel je beide als hetzelfde probleem, dan beland je in het verkeerde diagnosepad. Voor het overzicht, lees waarom je niet kunt inloggen op WordPress.

Welke van de vier is van jou?

Loop de vier oorzaken in volgorde af. Is de mail aangekomen? Zo niet: oorzaak 1, en het werk gebeurt in WordPress verstuurt geen e-mail. Zo ja: klik de link. Vond WordPress hem ongeldig? Oorzaak 2: vraag meteen een nieuwe aan. Laadt de link de verkeerde site of een 404? Oorzaak 3, fix WP_HOME. Gaat de mail naar een adres dat je niet meer beheert? Oorzaak 4: een admin moet het e-mailveld bijwerken. Van buiten lijken ze identiek, totdat je weet welke stap van de pijplijn brak.

Te vaak gedoe met wp-admin toegang?

Inlog- en toegangsproblemen komen vaak door wijzigingen, conflicts of securityregels. Professioneel onderhoud vermindert verrassingen met gecontroleerde updates en checks.

Bekijk WordPress onderhoud

Doorzoek deze site

Begin met typen om te zoeken, of blader door de kennisbank en blog.