Wordpress custom login errors based on whether or not an advanced custom field is set true for that user












0















I have kind of a unique issue. I have migrated a website and rebuilt it on wordpress. Some of the users that were migrated over the passwords were not migrated with them. So for all the old users I added an advanced custom field named "password_reset" and set it to true for all the older users.



What I am trying to do is show a custom message for these users that says something like "we have updated our website please rest your password with a link to reset".



I have added the below code to a function in the functions.php file



//if migrated user needs to reset password
$username = $_POST['username'];
if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}

return $error;


since the user isn't logged in quite yet when they are to recieve this error, I am trying to use the username_exists(username). Basically I need to identify is the user name exists already and if that username has the acf field "password_reset" checked. So far I have had no luck, any help would be much appreciated.



UPDATE: here is my lates version: the messages for invalid username and incorrect password are working, Just can't get it to work with the usernames that hold the acf value



function my_custom_error_messages() {
global $errors;
$err_codes = $errors->get_error_codes();

// Invalid username.
if ( in_array( 'invalid_username', $err_codes ) ) {
$error = '<strong>ERROR</strong>: Invalid username.';
}

// Incorrect password.
if ( in_array( 'incorrect_password', $err_codes ) ) {
$error = '<strong>ERROR</strong>: The password you entered is incorrect.';

if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}
}

return $error;


}



add_filter( 'login_errors', 'my_custom_error_messages');










share|improve this question

























  • How is your solution being implemented? Are you attaching it to an existing hook?

    – Ryan
    Jan 2 at 18:58











  • I am using the wordpress filter 'login_errors' in the functions file

    – Mike23
    Jan 2 at 19:47
















0















I have kind of a unique issue. I have migrated a website and rebuilt it on wordpress. Some of the users that were migrated over the passwords were not migrated with them. So for all the old users I added an advanced custom field named "password_reset" and set it to true for all the older users.



What I am trying to do is show a custom message for these users that says something like "we have updated our website please rest your password with a link to reset".



I have added the below code to a function in the functions.php file



//if migrated user needs to reset password
$username = $_POST['username'];
if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}

return $error;


since the user isn't logged in quite yet when they are to recieve this error, I am trying to use the username_exists(username). Basically I need to identify is the user name exists already and if that username has the acf field "password_reset" checked. So far I have had no luck, any help would be much appreciated.



UPDATE: here is my lates version: the messages for invalid username and incorrect password are working, Just can't get it to work with the usernames that hold the acf value



function my_custom_error_messages() {
global $errors;
$err_codes = $errors->get_error_codes();

// Invalid username.
if ( in_array( 'invalid_username', $err_codes ) ) {
$error = '<strong>ERROR</strong>: Invalid username.';
}

// Incorrect password.
if ( in_array( 'incorrect_password', $err_codes ) ) {
$error = '<strong>ERROR</strong>: The password you entered is incorrect.';

if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}
}

return $error;


}



add_filter( 'login_errors', 'my_custom_error_messages');










share|improve this question

























  • How is your solution being implemented? Are you attaching it to an existing hook?

    – Ryan
    Jan 2 at 18:58











  • I am using the wordpress filter 'login_errors' in the functions file

    – Mike23
    Jan 2 at 19:47














0












0








0








I have kind of a unique issue. I have migrated a website and rebuilt it on wordpress. Some of the users that were migrated over the passwords were not migrated with them. So for all the old users I added an advanced custom field named "password_reset" and set it to true for all the older users.



What I am trying to do is show a custom message for these users that says something like "we have updated our website please rest your password with a link to reset".



I have added the below code to a function in the functions.php file



//if migrated user needs to reset password
$username = $_POST['username'];
if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}

return $error;


since the user isn't logged in quite yet when they are to recieve this error, I am trying to use the username_exists(username). Basically I need to identify is the user name exists already and if that username has the acf field "password_reset" checked. So far I have had no luck, any help would be much appreciated.



UPDATE: here is my lates version: the messages for invalid username and incorrect password are working, Just can't get it to work with the usernames that hold the acf value



function my_custom_error_messages() {
global $errors;
$err_codes = $errors->get_error_codes();

// Invalid username.
if ( in_array( 'invalid_username', $err_codes ) ) {
$error = '<strong>ERROR</strong>: Invalid username.';
}

// Incorrect password.
if ( in_array( 'incorrect_password', $err_codes ) ) {
$error = '<strong>ERROR</strong>: The password you entered is incorrect.';

if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}
}

return $error;


}



add_filter( 'login_errors', 'my_custom_error_messages');










share|improve this question
















I have kind of a unique issue. I have migrated a website and rebuilt it on wordpress. Some of the users that were migrated over the passwords were not migrated with them. So for all the old users I added an advanced custom field named "password_reset" and set it to true for all the older users.



What I am trying to do is show a custom message for these users that says something like "we have updated our website please rest your password with a link to reset".



I have added the below code to a function in the functions.php file



//if migrated user needs to reset password
$username = $_POST['username'];
if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}

return $error;


since the user isn't logged in quite yet when they are to recieve this error, I am trying to use the username_exists(username). Basically I need to identify is the user name exists already and if that username has the acf field "password_reset" checked. So far I have had no luck, any help would be much appreciated.



UPDATE: here is my lates version: the messages for invalid username and incorrect password are working, Just can't get it to work with the usernames that hold the acf value



function my_custom_error_messages() {
global $errors;
$err_codes = $errors->get_error_codes();

// Invalid username.
if ( in_array( 'invalid_username', $err_codes ) ) {
$error = '<strong>ERROR</strong>: Invalid username.';
}

// Incorrect password.
if ( in_array( 'incorrect_password', $err_codes ) ) {
$error = '<strong>ERROR</strong>: The password you entered is incorrect.';

if (username_exists( $username ) && get_field( 'password_reset', 'user_'.$uid ) ) {

$error= 'Please reset your password. To reset your password <a href=" '. wp_lostpassword_url( home_url() ) . ' ">click here</a>.';

}
}

return $error;


}



add_filter( 'login_errors', 'my_custom_error_messages');







wordpress login message






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 2 at 19:49







Mike23

















asked Jan 2 at 17:52









Mike23Mike23

32




32













  • How is your solution being implemented? Are you attaching it to an existing hook?

    – Ryan
    Jan 2 at 18:58











  • I am using the wordpress filter 'login_errors' in the functions file

    – Mike23
    Jan 2 at 19:47



















  • How is your solution being implemented? Are you attaching it to an existing hook?

    – Ryan
    Jan 2 at 18:58











  • I am using the wordpress filter 'login_errors' in the functions file

    – Mike23
    Jan 2 at 19:47

















How is your solution being implemented? Are you attaching it to an existing hook?

– Ryan
Jan 2 at 18:58





How is your solution being implemented? Are you attaching it to an existing hook?

– Ryan
Jan 2 at 18:58













I am using the wordpress filter 'login_errors' in the functions file

– Mike23
Jan 2 at 19:47





I am using the wordpress filter 'login_errors' in the functions file

– Mike23
Jan 2 at 19:47












1 Answer
1






active

oldest

votes


















0














I believe the issue is that the username is not passed to the login_errors filter. The only data available within that filter is the error message that is passed (no definitive data about user accounts at all).



I have found a different reference that may shed some light on a way to provide a customized error message without using that filter. Try using the wp_authenticate_user filter, instead:



WordPress codex reference



https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user



Reference for application of code



https://backups.nl/internet/wordpress-revealing-username-login-trial-error/






share|improve this answer
























  • Thank you very much! This does seem to be what I am looking for. I will try this out.

    – Mike23
    Jan 3 at 13:51












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010935%2fwordpress-custom-login-errors-based-on-whether-or-not-an-advanced-custom-field-i%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














I believe the issue is that the username is not passed to the login_errors filter. The only data available within that filter is the error message that is passed (no definitive data about user accounts at all).



I have found a different reference that may shed some light on a way to provide a customized error message without using that filter. Try using the wp_authenticate_user filter, instead:



WordPress codex reference



https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user



Reference for application of code



https://backups.nl/internet/wordpress-revealing-username-login-trial-error/






share|improve this answer
























  • Thank you very much! This does seem to be what I am looking for. I will try this out.

    – Mike23
    Jan 3 at 13:51
















0














I believe the issue is that the username is not passed to the login_errors filter. The only data available within that filter is the error message that is passed (no definitive data about user accounts at all).



I have found a different reference that may shed some light on a way to provide a customized error message without using that filter. Try using the wp_authenticate_user filter, instead:



WordPress codex reference



https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user



Reference for application of code



https://backups.nl/internet/wordpress-revealing-username-login-trial-error/






share|improve this answer
























  • Thank you very much! This does seem to be what I am looking for. I will try this out.

    – Mike23
    Jan 3 at 13:51














0












0








0







I believe the issue is that the username is not passed to the login_errors filter. The only data available within that filter is the error message that is passed (no definitive data about user accounts at all).



I have found a different reference that may shed some light on a way to provide a customized error message without using that filter. Try using the wp_authenticate_user filter, instead:



WordPress codex reference



https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user



Reference for application of code



https://backups.nl/internet/wordpress-revealing-username-login-trial-error/






share|improve this answer













I believe the issue is that the username is not passed to the login_errors filter. The only data available within that filter is the error message that is passed (no definitive data about user accounts at all).



I have found a different reference that may shed some light on a way to provide a customized error message without using that filter. Try using the wp_authenticate_user filter, instead:



WordPress codex reference



https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_authenticate_user



Reference for application of code



https://backups.nl/internet/wordpress-revealing-username-login-trial-error/







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 2 at 21:00









RyanRyan

522517




522517













  • Thank you very much! This does seem to be what I am looking for. I will try this out.

    – Mike23
    Jan 3 at 13:51



















  • Thank you very much! This does seem to be what I am looking for. I will try this out.

    – Mike23
    Jan 3 at 13:51

















Thank you very much! This does seem to be what I am looking for. I will try this out.

– Mike23
Jan 3 at 13:51





Thank you very much! This does seem to be what I am looking for. I will try this out.

– Mike23
Jan 3 at 13:51




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010935%2fwordpress-custom-login-errors-based-on-whether-or-not-an-advanced-custom-field-i%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

Npm cannot find a required file even through it is in the searched directory