I want to keep a check if the user has a particular password, so I have been trying it with wp_check_password
but the account for which it is checked gets logged out and can’t login again till there is a call of wp_check_password
in the code.
Digging into the code, I found out that it sets the password by using the new hash. and moreover if I am using wp_check_password( 'hello', md5('hello'), 1 );
, it doesn’t even check what is inside the database and returns true. Isn’t that a bug?
Any ideas how can I check the user’s password?
Your example works correctly. You are checking if passwordhello
matches hashedhello
– which it naturally does.Hadn’t thought it through. Your example causes following issue:
hello
matches md5 ofhello
(instead of hash from user’s profile).hello
and updates user with it, locking him out (since his password is nowhello
instead of whatever it was before).See
wp_authenticate_username_password()
function for extensive example, but basic idea is:You can grab their hashed password from the database, and compare it to the entry you want to check using wp_hash_password().
To check if the current user’s password matches “hello”, try this:
Credits to: https://stackoverflow.com/a/37181662