Woocommerce Reset Password Not Working

Without wasting my time I used this code in my function.php file to resolve this issue.

add_filter( 'lostpassword_url',  'wdm_lostpassword_url', 10, 0 );
function wdm_lostpassword_url() {
   return site_url('/wp-login.php?action=lostpassword');
}

You can also get into a reset password loop (clicking reset link in email takes you to the form asking you to enter your email/username again instead of showing password reset form) if your host is caching the http://example.com/my-account/lost-password/ page. I resolved this with a client site on WPEngine by asking support to add this URL to the cache exclusions list and the problem immediately went away.

Edit: an even better explanation is here https://wordpress.org/support/topic/woocommerce-password-reset-issue-resolved/ -- Note where the support agent says “I did a Varnish exclusion for everything along the path of ^/my-account” .


I discovered the issue -

I found it was because the files in mytheme/woocommerce/emails were out of date.

The Woocommerce system status said they were up to date but when I copied the template files from the latest upgrade of woocommerce to override mine, it fixed the issue (Github showed some edits as well which confirmed this).