Твой способ почти рабочий
(а при наличии немного ума можно догадаться что можно временно заменить на свой, а потом вернуть прежний)
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
'incorrect_password',
sprintf(
/* translators: %s: User name. */
__( '<strong>Error:</strong> The password you entered for the username %s is incorrect.' ),
'<strong>' . $username . '</strong>'
) .
' <a href="' . wp_lostpassword_url() . '">' .
__( 'Lost your password?' ) .
'</a>'
);
}
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
В этом и проблема. Но я не готов тебя учить, тем более в коментах.
Пока не найдешь и не покажешь как это реализовать на практике - это и будет пустая болтовня. Давай, там же 10 минут на всё про всё :)
Что совершенно неважно в данном конкретном случае, ибо топикстартер знает логин админа.
Что совершенно несложно, ибо имея доступ к исходникам и соответственно базе данных, можно получить список всех юзеров и их роли.
Все твои "доп. защиты" также будут находиться где-то здесь, в коде. И я непонимаю, что значит "админ не дурак". Не дурак не даст доступа к исходникам левым людям.
Мне в четвертый раз повторить, что в исходниках можно поправить авторизацию разными способами, в том числе и не ломая остальных юзеров, или ты научишься читать?
Мне в пятый раз повторить, что можно подправить аворизацию без создания дыры?
Ликбезить пожалуйста научись себе.
Начиная от того, что "так сделать невозможно", до "это очень опасно, ай ай ай", ваш слив засчитан, сэр.