У меня какая-то уникальная проблема. Я перенес веб-сайт и перестроил его на WordPress. Некоторые пользователи, которые были перенесены через пароли, не были перенесены вместе с ними. Поэтому для всех старых пользователей я добавил расширенное настраиваемое поле с именем «password_reset» и установил его значение true для всех старых пользователей.
То, что я пытаюсь сделать, это показать специальное сообщение для этих пользователей, которое говорит что-то вроде «мы обновили наш сайт, пожалуйста, оставьте свой пароль со ссылкой для сброса».
Я добавил приведенный ниже код для функции в файле functions.php
//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;
, поскольку пользователь еще не вошел в систему, когда ему нужно получить эту ошибку, я пытаюсь использовать username_exists (username). По сути, мне нужно определить, существует ли уже имя пользователя, и если это имя пользователя проверено в поле acf "password_reset". Пока мне не повезло, любая помощь будет высоко ценится.
ОБНОВЛЕНИЕ: вот моя последняя версия: сообщения о неверном имени пользователя и неверном пароле работают, просто не могу заставить его работать с именами пользователей, которые содержат значение acf
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');